FlukyEngine
type_mat3x3.hpp
Go to the documentation of this file.
1 
4 #pragma once
5 
6 #include "type_vec3.hpp"
7 #include <limits>
8 #include <cstddef>
9 
10 namespace glm
11 {
12  template<typename T, qualifier Q>
13  struct mat<3, 3, T, Q>
14  {
15  typedef vec<3, T, Q> col_type;
16  typedef vec<3, T, Q> row_type;
17  typedef mat<3, 3, T, Q> type;
19  typedef T value_type;
20 
21  private:
22  col_type value[3];
23 
24  public:
25  // -- Accesses --
26 
27  typedef length_t length_type;
28  GLM_FUNC_DECL static GLM_CONSTEXPR length_type length() { return 3; }
29 
30  GLM_FUNC_DECL col_type & operator[](length_type i);
31  GLM_FUNC_DECL GLM_CONSTEXPR col_type const& operator[](length_type i) const;
32 
33  // -- Constructors --
34 
35  GLM_FUNC_DECL GLM_CONSTEXPR mat() GLM_DEFAULT;
36  template<qualifier P>
37  GLM_FUNC_DECL GLM_CONSTEXPR mat(mat<3, 3, T, P> const& m);
38 
39  GLM_FUNC_DECL explicit GLM_CONSTEXPR mat(T scalar);
40  GLM_FUNC_DECL GLM_CONSTEXPR mat(
41  T x0, T y0, T z0,
42  T x1, T y1, T z1,
43  T x2, T y2, T z2);
44  GLM_FUNC_DECL GLM_CONSTEXPR mat(
45  col_type const& v0,
46  col_type const& v1,
47  col_type const& v2);
48 
49  // -- Conversions --
50 
51  template<
52  typename X1, typename Y1, typename Z1,
53  typename X2, typename Y2, typename Z2,
54  typename X3, typename Y3, typename Z3>
55  GLM_FUNC_DECL GLM_CONSTEXPR mat(
56  X1 x1, Y1 y1, Z1 z1,
57  X2 x2, Y2 y2, Z2 z2,
58  X3 x3, Y3 y3, Z3 z3);
59 
60  template<typename V1, typename V2, typename V3>
61  GLM_FUNC_DECL GLM_CONSTEXPR mat(
62  vec<3, V1, Q> const& v1,
63  vec<3, V2, Q> const& v2,
64  vec<3, V3, Q> const& v3);
65 
66  // -- Matrix conversions --
67 
68  template<typename U, qualifier P>
69  GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 3, U, P> const& m);
70 
71  GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 2, T, Q> const& x);
72  GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 4, T, Q> const& x);
73  GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 3, T, Q> const& x);
74  GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 2, T, Q> const& x);
75  GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 4, T, Q> const& x);
76  GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 2, T, Q> const& x);
77  GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 4, T, Q> const& x);
78  GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 3, T, Q> const& x);
79 
80  // -- Unary arithmetic operators --
81 
82  template<typename U>
83  GLM_FUNC_DECL mat<3, 3, T, Q> & operator=(mat<3, 3, U, Q> const& m);
84  template<typename U>
85  GLM_FUNC_DECL mat<3, 3, T, Q> & operator+=(U s);
86  template<typename U>
87  GLM_FUNC_DECL mat<3, 3, T, Q> & operator+=(mat<3, 3, U, Q> const& m);
88  template<typename U>
89  GLM_FUNC_DECL mat<3, 3, T, Q> & operator-=(U s);
90  template<typename U>
91  GLM_FUNC_DECL mat<3, 3, T, Q> & operator-=(mat<3, 3, U, Q> const& m);
92  template<typename U>
93  GLM_FUNC_DECL mat<3, 3, T, Q> & operator*=(U s);
94  template<typename U>
95  GLM_FUNC_DECL mat<3, 3, T, Q> & operator*=(mat<3, 3, U, Q> const& m);
96  template<typename U>
97  GLM_FUNC_DECL mat<3, 3, T, Q> & operator/=(U s);
98  template<typename U>
99  GLM_FUNC_DECL mat<3, 3, T, Q> & operator/=(mat<3, 3, U, Q> const& m);
100 
101  // -- Increment and decrement operators --
102 
103  GLM_FUNC_DECL mat<3, 3, T, Q> & operator++();
104  GLM_FUNC_DECL mat<3, 3, T, Q> & operator--();
105  GLM_FUNC_DECL mat<3, 3, T, Q> operator++(int);
106  GLM_FUNC_DECL mat<3, 3, T, Q> operator--(int);
107  };
108 
109  // -- Unary operators --
110 
111  template<typename T, qualifier Q>
112  GLM_FUNC_DECL mat<3, 3, T, Q> operator+(mat<3, 3, T, Q> const& m);
113 
114  template<typename T, qualifier Q>
115  GLM_FUNC_DECL mat<3, 3, T, Q> operator-(mat<3, 3, T, Q> const& m);
116 
117  // -- Binary operators --
118 
119  template<typename T, qualifier Q>
120  GLM_FUNC_DECL mat<3, 3, T, Q> operator+(mat<3, 3, T, Q> const& m, T scalar);
121 
122  template<typename T, qualifier Q>
123  GLM_FUNC_DECL mat<3, 3, T, Q> operator+(T scalar, mat<3, 3, T, Q> const& m);
124 
125  template<typename T, qualifier Q>
126  GLM_FUNC_DECL mat<3, 3, T, Q> operator+(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);
127 
128  template<typename T, qualifier Q>
129  GLM_FUNC_DECL mat<3, 3, T, Q> operator-(mat<3, 3, T, Q> const& m, T scalar);
130 
131  template<typename T, qualifier Q>
132  GLM_FUNC_DECL mat<3, 3, T, Q> operator-(T scalar, mat<3, 3, T, Q> const& m);
133 
134  template<typename T, qualifier Q>
135  GLM_FUNC_DECL mat<3, 3, T, Q> operator-(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);
136 
137  template<typename T, qualifier Q>
138  GLM_FUNC_DECL mat<3, 3, T, Q> operator*(mat<3, 3, T, Q> const& m, T scalar);
139 
140  template<typename T, qualifier Q>
141  GLM_FUNC_DECL mat<3, 3, T, Q> operator*(T scalar, mat<3, 3, T, Q> const& m);
142 
143  template<typename T, qualifier Q>
144  GLM_FUNC_DECL typename mat<3, 3, T, Q>::col_type operator*(mat<3, 3, T, Q> const& m, typename mat<3, 3, T, Q>::row_type const& v);
145 
146  template<typename T, qualifier Q>
147  GLM_FUNC_DECL typename mat<3, 3, T, Q>::row_type operator*(typename mat<3, 3, T, Q>::col_type const& v, mat<3, 3, T, Q> const& m);
148 
149  template<typename T, qualifier Q>
150  GLM_FUNC_DECL mat<3, 3, T, Q> operator*(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);
151 
152  template<typename T, qualifier Q>
153  GLM_FUNC_DECL mat<2, 3, T, Q> operator*(mat<3, 3, T, Q> const& m1, mat<2, 3, T, Q> const& m2);
154 
155  template<typename T, qualifier Q>
156  GLM_FUNC_DECL mat<4, 3, T, Q> operator*(mat<3, 3, T, Q> const& m1, mat<4, 3, T, Q> const& m2);
157 
158  template<typename T, qualifier Q>
159  GLM_FUNC_DECL mat<3, 3, T, Q> operator/(mat<3, 3, T, Q> const& m, T scalar);
160 
161  template<typename T, qualifier Q>
162  GLM_FUNC_DECL mat<3, 3, T, Q> operator/(T scalar, mat<3, 3, T, Q> const& m);
163 
164  template<typename T, qualifier Q>
165  GLM_FUNC_DECL typename mat<3, 3, T, Q>::col_type operator/(mat<3, 3, T, Q> const& m, typename mat<3, 3, T, Q>::row_type const& v);
166 
167  template<typename T, qualifier Q>
168  GLM_FUNC_DECL typename mat<3, 3, T, Q>::row_type operator/(typename mat<3, 3, T, Q>::col_type const& v, mat<3, 3, T, Q> const& m);
169 
170  template<typename T, qualifier Q>
171  GLM_FUNC_DECL mat<3, 3, T, Q> operator/(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);
172 
173  // -- Boolean operators --
174 
175  template<typename T, qualifier Q>
176  GLM_FUNC_DECL GLM_CONSTEXPR bool operator==(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);
177 
178  template<typename T, qualifier Q>
179  GLM_FUNC_DECL bool operator!=(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);
180 }//namespace glm
181 
182 #ifndef GLM_EXTERNAL_TEMPLATE
183 #include "type_mat3x3.inl"
184 #endif
Definition: type_vec3.hpp:17
Definition: qualifier.hpp:35
Core features
Definition: common.hpp:20
Core features
Definition: type_mat2x3.hpp:14
Definition: type_mat4x3.hpp:14
Definition: type_mat3x3.hpp:13
Definition: type_mat2x2.hpp:13
Definition: type_mat4x2.hpp:14
Definition: type_mat3x2.hpp:14
Definition: qualifier.hpp:36
Definition: type_mat2x4.hpp:14
Definition: type_mat4x4.hpp:13
Definition: type_mat3x4.hpp:14
Definition: core_func_geometric.cpp:14