- Main Page
- Related Pages
- Modules
- Classes
- Files

- File List

type_mat3x4.hpp
Go to the documentation of this file.

    00001
    00002
    00003
    00004
    00005
    00006
    00007
    00008
    00009
    00010
    00011
    00012
    00013
    00014
    00015
    00016
    00017
    00018
    00019
    00020
    00021
    00022
    00023
    00024
    00025
    00026
    00027
    00028
    00029 #ifndef glm_core_type_mat3x4
    00030 #define glm_core_type_mat3x4
    00031
    00032 #include "type_mat.hpp"
    00033
    00034 namespace glm{
    00035 namespace detail
    00036 {
    00037         template <typename T> struct tvec1;
    00038         template <typename T> struct tvec2;
    00039         template <typename T> struct tvec3;
    00040         template <typename T> struct tvec4;
    00041         template <typename T> struct tmat2x2;
    00042         template <typename T> struct tmat2x3;
    00043         template <typename T> struct tmat2x4;
    00044         template <typename T> struct tmat3x2;
    00045         template <typename T> struct tmat3x3;
    00046         template <typename T> struct tmat3x4;
    00047         template <typename T> struct tmat4x2;
    00048         template <typename T> struct tmat4x3;
    00049         template <typename T> struct tmat4x4;
    00050
    00051         // \brief Template for 3 columns and 4 rows matrix of floating-point numbers.
    00052         // \ingroup core_template
    00053         template <typename T>
    00054         struct tmat3x4
    00055         {
    00056                 enum ctor{null};
    00057                 typedef T value_type;
    00058                 typedef std::size_t size_type;
    00059                 typedef tvec4<T> col_type;
    00060                 typedef tvec3<T> row_type;
    00061         GLM_FUNC_DECL size_type length() const;
    00062                 static GLM_FUNC_DECL size_type col_size();
    00063                 static GLM_FUNC_DECL size_type row_size();
    00064
    00065                 typedef tmat3x4<T> type;
    00066                 typedef tmat4x3<T> transpose_type;
    00067
    00068         private:
    00069                 // Data
    00070                 col_type value[3];
    00071
    00072         public:
    00073                 // Constructors
    00074                 GLM_FUNC_DECL tmat3x4();
    00075                 GLM_FUNC_DECL tmat3x4(tmat3x4 const & m);
    00076
    00077                 GLM_FUNC_DECL explicit tmat3x4(
    00078                         ctor Null);
    00079                 GLM_FUNC_DECL explicit tmat3x4(
    00080                         value_type const & s);
    00081                 GLM_FUNC_DECL explicit tmat3x4(
    00082                         value_type const & x0, value_type const & y0, value_type const & z0, value_type const & w0,
    00083                         value_type const & x1, value_type const & y1, value_type const & z1, value_type const & w1,
    00084                         value_type const & x2, value_type const & y2, value_type const & z2, value_type const & w2);
    00085                 GLM_FUNC_DECL explicit tmat3x4(
    00086                         col_type const & v0,
    00087                         col_type const & v1,
    00088                         col_type const & v2);
    00089
    00091                 // Conversions
    00092                 template <typename U>
    00093                 GLM_FUNC_DECL explicit tmat3x4(
    00094             U const & x);
    00095
    00096                 template
    00097         <
    00098             typename X1, typename Y1, typename Z1, typename W1,
    00099             typename X2, typename Y2, typename Z2, typename W2,
    00100             typename X3, typename Y3, typename Z3, typename W3
    00101         >
    00102                 GLM_FUNC_DECL explicit tmat3x4(
    00103             X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1,
    00104             X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2,
    00105             X3 const & x3, Y3 const & y3, Z3 const & z3, W3 const & w3);
    00106
    00107                 template <typename V1, typename V2, typename V3>
    00108                 GLM_FUNC_DECL explicit tmat3x4(
    00109             tvec4<V1> const & v1,
    00110             tvec4<V2> const & v2,
    00111             tvec4<V3> const & v3);
    00112
    00113                 // Matrix conversion
    00114                 template <typename U>
    00115                 GLM_FUNC_DECL explicit tmat3x4(tmat3x4<U> const & m);
    00116
    00117                 GLM_FUNC_DECL explicit tmat3x4(tmat2x2<T> const & x);
    00118                 GLM_FUNC_DECL explicit tmat3x4(tmat3x3<T> const & x);
    00119                 GLM_FUNC_DECL explicit tmat3x4(tmat4x4<T> const & x);
    00120                 GLM_FUNC_DECL explicit tmat3x4(tmat2x3<T> const & x);
    00121                 GLM_FUNC_DECL explicit tmat3x4(tmat3x2<T> const & x);
    00122                 GLM_FUNC_DECL explicit tmat3x4(tmat2x4<T> const & x);
    00123                 GLM_FUNC_DECL explicit tmat3x4(tmat4x2<T> const & x);
    00124                 GLM_FUNC_DECL explicit tmat3x4(tmat4x3<T> const & x);
    00125
    00126                 // Accesses
    00127                 col_type & operator[](size_type i);
    00128                 col_type const & operator[](size_type i) const;
    00129
    00130                 // Unary updatable operators
    00131                 GLM_FUNC_DECL tmat3x4<T> & operator=  (tmat3x4<T> const & m);
    00132                 template <typename U>
    00133                 GLM_FUNC_DECL tmat3x4<T> & operator=  (tmat3x4<U> const & m);
    00134                 template <typename U>
    00135                 GLM_FUNC_DECL tmat3x4<T> & operator+= (U const & s);
    00136                 template <typename U>
    00137                 GLM_FUNC_DECL tmat3x4<T> & operator+= (tmat3x4<U> const & m);
    00138                 template <typename U>
    00139                 GLM_FUNC_DECL tmat3x4<T> & operator-= (U const & s);
    00140                 template <typename U>
    00141                 GLM_FUNC_DECL tmat3x4<T> & operator-= (tmat3x4<U> const & m);
    00142                 template <typename U>
    00143                 GLM_FUNC_DECL tmat3x4<T> & operator*= (U const & s);
    00144                 template <typename U>
    00145                 GLM_FUNC_DECL tmat3x4<T> & operator*= (tmat3x4<U> const & m);
    00146                 template <typename U>
    00147                 GLM_FUNC_DECL tmat3x4<T> & operator/= (U const & s);
    00148
    00149                 GLM_FUNC_DECL tmat3x4<T> & operator++ ();
    00150                 GLM_FUNC_DECL tmat3x4<T> & operator-- ();
    00151         };
    00152
    00153         // Binary operators
    00154         template <typename T>
    00155         tmat3x4<T> operator+ (
    00156                 tmat3x4<T> const & m,
    00157                 typename tmat3x4<T>::value_type const & s);
    00158
    00159         template <typename T>
    00160         tmat3x4<T> operator+ (
    00161                 tmat3x4<T> const & m1,
    00162                 tmat3x4<T> const & m2);
    00163
    00164         template <typename T>
    00165         tmat3x4<T> operator- (
    00166                 tmat3x4<T> const & m,
    00167                 typename tmat3x4<T>::value_type const & s);
    00168
    00169         template <typename T>
    00170         tmat3x4<T> operator- (
    00171                 tmat3x4<T> const & m1,
    00172                 tmat3x4<T> const & m2);
    00173
    00174         template <typename T>
    00175         tmat3x4<T> operator* (
    00176                 tmat3x4<T> const & m,
    00177                 typename tmat3x4<T>::value_type const & s);
    00178
    00179         template <typename T>
    00180         tmat3x4<T> operator* (
    00181                 typename tmat3x4<T>::value_type const & s,
    00182                 tmat3x4<T> const & m);
    00183
    00184         template <typename T>
    00185         typename tmat3x4<T>::col_type operator* (
    00186                 tmat3x4<T> const & m,
    00187                 typename tmat3x4<T>::row_type const & v);
    00188
    00189         template <typename T>
    00190         typename tmat3x4<T>::row_type operator* (
    00191                 typename tmat3x4<T>::col_type const & v,
    00192                 tmat3x4<T> const & m);
    00193
    00194         template <typename T>
    00195         tmat4x4<T> operator* (
    00196                 tmat3x4<T> const & m1,
    00197                 tmat4x3<T> const & m2);
    00198
    00199         template <typename T>
    00200         tmat2x4<T> operator* (
    00201                 tmat3x4<T> const & m1,
    00202                 tmat2x3<T> const & m2);
    00203
    00204         template <typename T>
    00205         tmat3x4<T> operator* (
    00206                 tmat3x4<T> const & m1,
    00207                 tmat3x3<T> const & m2);
    00208
    00209         template <typename T>
    00210         tmat3x4<T> operator/ (
    00211                 tmat3x4<T> const & m,
    00212                 typename tmat3x4<T>::value_type const & s);
    00213
    00214         template <typename T>
    00215         tmat3x4<T> operator/ (
    00216                 typename tmat3x4<T>::value_type const & s,
    00217                 tmat3x4<T> const & m);
    00218
    00219         // Unary constant operators
    00220         template <typename T>
    00221         tmat3x4<T> const operator-  (
    00222                 tmat3x4<T> const & m);
    00223
    00224         template <typename T>
    00225         tmat3x4<T> const operator-- (
    00226                 tmat3x4<T> const & m,
    00227                 int);
    00228
    00229         template <typename T>
    00230         tmat3x4<T> const operator++ (
    00231                 tmat3x4<T> const & m,
    00232                 int);
    00233
    00234 }//namespace detail
    00235
    00238
    00244         typedef detail::tmat3x4<lowp_float>             lowp_mat3x4;
    00245
    00251         typedef detail::tmat3x4<mediump_float>  mediump_mat3x4;
    00252
    00258         typedef detail::tmat3x4<highp_float>    highp_mat3x4;
    00259
    00261 }//namespace glm
    00262
    00263 #ifndef GLM_EXTERNAL_TEMPLATE
    00264 #include "type_mat3x4.inl"
    00265 #endif
    00266
    00267 #endif //glm_core_type_mat3x4