00001
00002
00004
00005
00006
00007
00009
00010 #ifndef glm_core_type_mat3x3
00011 #define glm_core_type_mat3x3
00012
00013 #include "type_mat.hpp"
00014
00015 namespace glm
00016 {
00017 namespace test
00018 {
00019 void main_mat3x3();
00020 }
00021
00022 namespace detail
00023 {
00024 template <typename T> struct tvec1;
00025 template <typename T> struct tvec2;
00026 template <typename T> struct tvec3;
00027 template <typename T> struct tvec4;
00028 template <typename T> struct tmat2x2;
00029 template <typename T> struct tmat2x3;
00030 template <typename T> struct tmat2x4;
00031 template <typename T> struct tmat3x2;
00032 template <typename T> struct tmat3x3;
00033 template <typename T> struct tmat3x4;
00034 template <typename T> struct tmat4x2;
00035 template <typename T> struct tmat4x3;
00036 template <typename T> struct tmat4x4;
00037
00039 template <typename T>
00040 struct tmat3x3
00041 {
00042 enum ctor{null};
00043 typedef T value_type;
00044 typedef std::size_t size_type;
00045 typedef tvec3<T> col_type;
00046 typedef tvec3<T> row_type;
00047 static size_type col_size();
00048 static size_type row_size();
00049
00050 typedef tmat3x3<T> type;
00051 typedef tmat3x3<T> transpose_type;
00052
00053 public:
00054
00055 tmat3x3<T> _inverse() const;
00056
00057 private:
00058
00059 col_type value[3];
00060
00061 public:
00062
00063 tmat3x3();
00064 tmat3x3(tmat3x3 const & m);
00065
00066 explicit tmat3x3(
00067 ctor Null);
00068 explicit tmat3x3(
00069 value_type const & s);
00070 explicit tmat3x3(
00071 value_type const & x0, value_type const & y0, value_type const & z0,
00072 value_type const & x1, value_type const & y1, value_type const & z1,
00073 value_type const & x2, value_type const & y2, value_type const & z2);
00074 explicit tmat3x3(
00075 col_type const & v0,
00076 col_type const & v1,
00077 col_type const & v2);
00078
00079
00080 template <typename U>
00081 explicit tmat3x3(tmat3x3<U> const & m);
00082
00083 explicit tmat3x3(tmat2x2<T> const & x);
00084 explicit tmat3x3(tmat4x4<T> const & x);
00085 explicit tmat3x3(tmat2x3<T> const & x);
00086 explicit tmat3x3(tmat3x2<T> const & x);
00087 explicit tmat3x3(tmat2x4<T> const & x);
00088 explicit tmat3x3(tmat4x2<T> const & x);
00089 explicit tmat3x3(tmat3x4<T> const & x);
00090 explicit tmat3x3(tmat4x3<T> const & x);
00091
00092
00093 col_type & operator[](size_type i);
00094 col_type const & operator[](size_type i) const;
00095
00096
00097 tmat3x3<T>& operator= (tmat3x3<T> const & m);
00098 template <typename U>
00099 tmat3x3<T>& operator= (tmat3x3<U> const & m);
00100 template <typename U>
00101 tmat3x3<T>& operator+= (U const & s);
00102 template <typename U>
00103 tmat3x3<T>& operator+= (tmat3x3<U> const & m);
00104 template <typename U>
00105 tmat3x3<T>& operator-= (U const & s);
00106 template <typename U>
00107 tmat3x3<T>& operator-= (tmat3x3<U> const & m);
00108 template <typename U>
00109 tmat3x3<T>& operator*= (U const & s);
00110 template <typename U>
00111 tmat3x3<T>& operator*= (tmat3x3<U> const & m);
00112 template <typename U>
00113 tmat3x3<T>& operator/= (U const & s);
00114 template <typename U>
00115 tmat3x3<T>& operator/= (tmat3x3<U> const & m);
00116 tmat3x3<T>& operator++ ();
00117 tmat3x3<T>& operator-- ();
00118 };
00119
00120
00121 template <typename T>
00122 tmat3x3<T> operator+ (
00123 tmat3x3<T> const & m,
00124 typename tmat3x3<T>::value_type const & s);
00125
00126 template <typename T>
00127 tmat3x3<T> operator+ (
00128 typename tmat3x3<T>::value_type const & s,
00129 tmat3x3<T> const & m);
00130
00131 template <typename T>
00132 tmat3x3<T> operator+ (
00133 tmat3x3<T> const & m1,
00134 tmat3x3<T> const & m2);
00135
00136 template <typename T>
00137 tmat3x3<T> operator- (
00138 tmat3x3<T> const & m,
00139 typename tmat3x3<T>::value_type const & s);
00140
00141 template <typename T>
00142 tmat3x3<T> operator- (
00143 typename tmat3x3<T>::value_type const & s,
00144 tmat3x3<T> const & m);
00145
00146 template <typename T>
00147 tmat3x3<T> operator- (
00148 tmat3x3<T> const & m1,
00149 tmat3x3<T> const & m2);
00150
00151 template <typename T>
00152 tmat3x3<T> operator* (
00153 tmat3x3<T> const & m,
00154 typename tmat3x3<T>::value_type const & s);
00155
00156 template <typename T>
00157 tmat3x3<T> operator* (
00158 typename tmat3x3<T>::value_type const & s,
00159 tmat3x3<T> const & m);
00160
00161 template <typename T>
00162 typename tmat3x3<T>::col_type operator* (
00163 tmat3x3<T> const & m,
00164 typename tmat3x3<T>::row_type const & v);
00165
00166 template <typename T>
00167 typename tmat3x3<T>::row_type operator* (
00168 typename tmat3x3<T>::col_type const & v,
00169 tmat3x3<T> const & m);
00170
00171 template <typename T>
00172 tmat3x3<T> operator* (
00173 tmat3x3<T> const & m1,
00174 tmat3x3<T> const & m2);
00175
00176 template <typename T>
00177 tmat3x3<T> operator/ (
00178 tmat3x3<T> const & m,
00179 typename tmat3x3<T>::value_type const & s);
00180
00181 template <typename T>
00182 tmat3x3<T> operator/ (
00183 typename tmat3x3<T>::value_type const & s,
00184 tmat3x3<T> const & m);
00185
00186 template <typename T>
00187 typename tmat3x3<T>::col_type operator/ (
00188 tmat3x3<T> const & m,
00189 typename tmat3x3<T>::row_type const & v);
00190
00191 template <typename T>
00192 typename tmat3x3<T>::row_type operator/ (
00193 typename tmat3x3<T>::col_type const & v,
00194 tmat3x3<T> const & m);
00195
00196 template <typename T>
00197 tmat3x3<T> operator/ (
00198 tmat3x3<T> const & m1,
00199 tmat3x3<T> const & m2);
00200
00201
00202 template <typename T>
00203 tmat3x3<T> const operator- (
00204 tmat3x3<T> const & m);
00205
00206 template <typename T>
00207 tmat3x3<T> const operator-- (
00208 tmat3x3<T> const & m,
00209 int);
00210
00211 template <typename T>
00212 tmat3x3<T> const operator++ (
00213 tmat3x3<T> const & m,
00214 int);
00215
00216 }
00217
00218 namespace core{
00219 namespace type{
00220
00221 namespace precision
00222 {
00226 typedef detail::tmat3x3<lowp_float> lowp_mat3x3;
00230 typedef detail::tmat3x3<mediump_float> mediump_mat3x3;
00234 typedef detail::tmat3x3<highp_float> highp_mat3x3;
00235 }
00236
00237
00238 }
00239 }
00240 }
00241
00242 #include "type_mat3x3.inl"
00243
00244 #endif //glm_core_type_mat3x3