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
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
00070 col_type value[3];
00071
00072 public:
00073
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
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
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
00127 col_type & operator[](size_type i);
00128 col_type const & operator[](size_type i) const;
00129
00130
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
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
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 }
00235
00239 typedef detail::tmat3x4<lowp_float> lowp_mat3x4;
00243 typedef detail::tmat3x4<mediump_float> mediump_mat3x4;
00247 typedef detail::tmat3x4<highp_float> highp_mat3x4;
00248
00249 }
00250
00251 #ifndef GLM_EXTERNAL_TEMPLATE
00252 #include "type_mat3x4.inl"
00253 #endif
00254
00255 #endif //glm_core_type_mat3x4