0.9.6
type_mat3x2.hpp
Go to the documentation of this file.
1 
29 #pragma once
30 
31 #include "../fwd.hpp"
32 #include "type_vec2.hpp"
33 #include "type_vec3.hpp"
34 #include "type_mat.hpp"
35 #include <limits>
36 #include <cstddef>
37 
38 namespace glm
39 {
40  template <typename T, precision P = defaultp>
41  struct tmat3x2
42  {
43  typedef T value_type;
44  typedef std::size_t size_type;
45  typedef tvec2<T, P> col_type;
46  typedef tvec3<T, P> row_type;
47  typedef tmat3x2<T, P> type;
48  typedef tmat2x3<T, P> transpose_type;
49 
50 # ifdef GLM_FORCE_SIZE_FUNC
51  GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
52 # else
53  GLM_FUNC_DECL GLM_CONSTEXPR length_t length() const;
54 # endif//GLM_FORCE_SIZE_FUNC
55 
56  private:
58  col_type value[3];
60 
61  public:
62  // Constructors
63  GLM_FUNC_DECL tmat3x2();
64  template <precision Q>
65  GLM_FUNC_DECL tmat3x2(tmat3x2<T, Q> const & m);
66 
67  GLM_FUNC_DECL explicit tmat3x2(ctor);
68  GLM_FUNC_DECL explicit tmat3x2(T const & s);
69  GLM_FUNC_DECL tmat3x2(
70  T const & x0, T const & y0,
71  T const & x1, T const & y1,
72  T const & x2, T const & y2);
73  GLM_FUNC_DECL tmat3x2(
74  col_type const & v0,
75  col_type const & v1,
76  col_type const & v2);
77 
79  // Conversions
80 
81  template<
82  typename X1, typename Y1,
83  typename X2, typename Y2,
84  typename X3, typename Y3>
85  GLM_FUNC_DECL tmat3x2(
86  X1 const & x1, Y1 const & y1,
87  X2 const & x2, Y2 const & y2,
88  X3 const & x3, Y3 const & y3);
89 
90  template <typename V1, typename V2, typename V3>
91  GLM_FUNC_DECL tmat3x2(
92  tvec2<V1, P> const & v1,
93  tvec2<V2, P> const & v2,
94  tvec2<V3, P> const & v3);
95 
97  // Matrix conversions
98 
99 # ifdef GLM_FORCE_EXPLICIT_CTOR
100  template <typename U, precision Q>
101  GLM_FUNC_DECL explicit tmat3x2(tmat3x2<U, Q> const & m);
102 # else
103  template <typename U, precision Q>
104  GLM_FUNC_DECL tmat3x2(tmat3x2<U, Q> const & m);
105 # endif
106 
107  GLM_FUNC_DECL explicit tmat3x2(tmat2x2<T, P> const & x);
108  GLM_FUNC_DECL explicit tmat3x2(tmat3x3<T, P> const & x);
109  GLM_FUNC_DECL explicit tmat3x2(tmat4x4<T, P> const & x);
110  GLM_FUNC_DECL explicit tmat3x2(tmat2x3<T, P> const & x);
111  GLM_FUNC_DECL explicit tmat3x2(tmat2x4<T, P> const & x);
112  GLM_FUNC_DECL explicit tmat3x2(tmat3x4<T, P> const & x);
113  GLM_FUNC_DECL explicit tmat3x2(tmat4x2<T, P> const & x);
114  GLM_FUNC_DECL explicit tmat3x2(tmat4x3<T, P> const & x);
115 
116  // Accesses
117  GLM_FUNC_DECL col_type & operator[](length_t i);
118  GLM_FUNC_DECL col_type const & operator[](length_t i) const;
119 
120  template <typename U>
121  GLM_FUNC_DECL tmat3x2<T, P> & operator= (tmat3x2<U, P> const & m);
122  template <typename U>
123  GLM_FUNC_DECL tmat3x2<T, P> & operator+= (U s);
124  template <typename U>
125  GLM_FUNC_DECL tmat3x2<T, P> & operator+= (tmat3x2<U, P> const & m);
126  template <typename U>
127  GLM_FUNC_DECL tmat3x2<T, P> & operator-= (U s);
128  template <typename U>
129  GLM_FUNC_DECL tmat3x2<T, P> & operator-= (tmat3x2<U, P> const & m);
130  template <typename U>
131  GLM_FUNC_DECL tmat3x2<T, P> & operator*= (U s);
132  template <typename U>
133  GLM_FUNC_DECL tmat3x2<T, P> & operator/= (U s);
134 
136  // Increment and decrement operators
137 
138  GLM_FUNC_DECL tmat3x2<T, P> & operator++ ();
139  GLM_FUNC_DECL tmat3x2<T, P> & operator-- ();
140  GLM_FUNC_DECL tmat3x2<T, P> operator++(int);
141  GLM_FUNC_DECL tmat3x2<T, P> operator--(int);
142  };
143 
144  // Binary operators
145  template <typename T, precision P>
146  GLM_FUNC_DECL tmat3x2<T, P> operator+ (
147  tmat3x2<T, P> const & m,
148  T const & s);
149 
150  template <typename T, precision P>
151  GLM_FUNC_DECL tmat3x2<T, P> operator+ (
152  tmat3x2<T, P> const & m1,
153  tmat3x2<T, P> const & m2);
154 
155  template <typename T, precision P>
156  GLM_FUNC_DECL tmat3x2<T, P> operator- (
157  tmat3x2<T, P> const & m,
158  T const & s);
159 
160  template <typename T, precision P>
161  GLM_FUNC_DECL tmat3x2<T, P> operator- (
162  tmat3x2<T, P> const & m1,
163  tmat3x2<T, P> const & m2);
164 
165  template <typename T, precision P>
166  GLM_FUNC_DECL tmat3x2<T, P> operator* (
167  tmat3x2<T, P> const & m,
168  T const & s);
169 
170  template <typename T, precision P>
171  GLM_FUNC_DECL tmat3x2<T, P> operator* (
172  T const & s,
173  tmat3x2<T, P> const & m);
174 
175  template <typename T, precision P>
176  GLM_FUNC_DECL typename tmat3x2<T, P>::col_type operator* (
177  tmat3x2<T, P> const & m,
178  typename tmat3x2<T, P>::row_type const & v);
179 
180  template <typename T, precision P>
181  GLM_FUNC_DECL typename tmat3x2<T, P>::row_type operator* (
182  typename tmat3x2<T, P>::col_type const & v,
183  tmat3x2<T, P> const & m);
184 
185  template <typename T, precision P>
186  GLM_FUNC_DECL tmat2x2<T, P> operator* (
187  tmat3x2<T, P> const & m1,
188  tmat2x3<T, P> const & m2);
189 
190  template <typename T, precision P>
191  GLM_FUNC_DECL tmat3x2<T, P> operator* (
192  tmat3x2<T, P> const & m1,
193  tmat3x3<T, P> const & m2);
194 
195  template <typename T, precision P>
196  GLM_FUNC_DECL tmat4x2<T, P> operator* (
197  tmat3x2<T, P> const & m1,
198  tmat4x3<T, P> const & m2);
199 
200  template <typename T, precision P>
201  GLM_FUNC_DECL tmat3x2<T, P> operator/ (
202  tmat3x2<T, P> const & m,
203  T const & s);
204 
205  template <typename T, precision P>
206  GLM_FUNC_DECL tmat3x2<T, P> operator/ (
207  T const & s,
208  tmat3x2<T, P> const & m);
209 
210  // Unary constant operators
211  template <typename T, precision P>
212  GLM_FUNC_DECL tmat3x2<T, P> const operator-(
213  tmat3x2<T, P> const & m);
214 }//namespace glm
215 
216 #ifndef GLM_EXTERNAL_TEMPLATE
217 #include "type_mat3x2.inl"
218 #endif
GLM_FUNC_DECL T length(vecType< T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).
OpenGL Mathematics (glm.g-truc.net)
Definition: _noise.hpp:31
OpenGL Mathematics (glm.g-truc.net)
OpenGL Mathematics (glm.g-truc.net)