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