0.9.6
type_mat2x4.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_vec4.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 tmat2x4
42  {
43  typedef T value_type;
44  typedef std::size_t size_type;
45  typedef tvec4<T, P> col_type;
46  typedef tvec2<T, P> row_type;
47  typedef tmat2x4<T, P> type;
48  typedef tmat4x2<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[2];
60 
61  public:
62  // Constructors
63  GLM_FUNC_DECL tmat2x4();
64  template <precision Q>
65  GLM_FUNC_DECL tmat2x4(tmat2x4<T, Q> const & m);
66 
67  GLM_FUNC_DECL explicit tmat2x4(ctor);
68  GLM_FUNC_DECL explicit tmat2x4(T const & s);
69  GLM_FUNC_DECL tmat2x4(
70  T const & x0, T const & y0, T const & z0, T const & w0,
71  T const & x1, T const & y1, T const & z1, T const & w1);
72  GLM_FUNC_DECL tmat2x4(
73  col_type const & v0,
74  col_type const & v1);
75 
77  // Conversions
78  template <
79  typename X1, typename Y1, typename Z1, typename W1,
80  typename X2, typename Y2, typename Z2, typename W2>
81  GLM_FUNC_DECL tmat2x4(
82  X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1,
83  X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2);
84 
85  template <typename U, typename V>
86  GLM_FUNC_DECL tmat2x4(
87  tvec4<U, P> const & v1,
88  tvec4<V, P> const & v2);
89 
91  // Matrix conversions
92 
93 # ifdef GLM_FORCE_EXPLICIT_CTOR
94  template <typename U, precision Q>
95  GLM_FUNC_DECL explicit tmat2x4(tmat2x4<U, Q> const & m);
96 # else
97  template <typename U, precision Q>
98  GLM_FUNC_DECL tmat2x4(tmat2x4<U, Q> const & m);
99 # endif
100 
101  GLM_FUNC_DECL explicit tmat2x4(tmat2x2<T, P> const & x);
102  GLM_FUNC_DECL explicit tmat2x4(tmat3x3<T, P> const & x);
103  GLM_FUNC_DECL explicit tmat2x4(tmat4x4<T, P> const & x);
104  GLM_FUNC_DECL explicit tmat2x4(tmat2x3<T, P> const & x);
105  GLM_FUNC_DECL explicit tmat2x4(tmat3x2<T, P> const & x);
106  GLM_FUNC_DECL explicit tmat2x4(tmat3x4<T, P> const & x);
107  GLM_FUNC_DECL explicit tmat2x4(tmat4x2<T, P> const & x);
108  GLM_FUNC_DECL explicit tmat2x4(tmat4x3<T, P> const & x);
109 
110  // Accesses
111  GLM_FUNC_DECL col_type & operator[](length_t i);
112  GLM_FUNC_DECL col_type const & operator[](length_t i) const;
113 
114  template <typename U>
115  GLM_FUNC_DECL tmat2x4<T, P>& operator= (tmat2x4<U, P> const & m);
116  template <typename U>
117  GLM_FUNC_DECL tmat2x4<T, P>& operator+= (U s);
118  template <typename U>
119  GLM_FUNC_DECL tmat2x4<T, P>& operator+= (tmat2x4<U, P> const & m);
120  template <typename U>
121  GLM_FUNC_DECL tmat2x4<T, P>& operator-= (U s);
122  template <typename U>
123  GLM_FUNC_DECL tmat2x4<T, P>& operator-= (tmat2x4<U, P> const & m);
124  template <typename U>
125  GLM_FUNC_DECL tmat2x4<T, P>& operator*= (U s);
126  template <typename U>
127  GLM_FUNC_DECL tmat2x4<T, P>& operator/= (U s);
128 
130  // Increment and decrement operators
131 
132  GLM_FUNC_DECL tmat2x4<T, P> & operator++ ();
133  GLM_FUNC_DECL tmat2x4<T, P> & operator-- ();
134  GLM_FUNC_DECL tmat2x4<T, P> operator++(int);
135  GLM_FUNC_DECL tmat2x4<T, P> operator--(int);
136  };
137 
138  // Binary operators
139 
140  template <typename T, precision P>
141  GLM_FUNC_DECL tmat2x4<T, P> operator+ (
142  tmat2x4<T, P> const & m,
143  T const & s);
144 
145  template <typename T, precision P>
146  GLM_FUNC_DECL tmat2x4<T, P> operator+ (
147  tmat2x4<T, P> const & m1,
148  tmat2x4<T, P> const & m2);
149 
150  template <typename T, precision P>
151  GLM_FUNC_DECL tmat2x4<T, P> operator- (
152  tmat2x4<T, P> const & m,
153  T const & s);
154 
155  template <typename T, precision P>
156  GLM_FUNC_DECL tmat2x4<T, P> operator- (
157  tmat2x4<T, P> const & m1,
158  tmat2x4<T, P> const & m2);
159 
160  template <typename T, precision P>
161  GLM_FUNC_DECL tmat2x4<T, P> operator* (
162  tmat2x4<T, P> const & m,
163  T const & s);
164 
165  template <typename T, precision P>
166  GLM_FUNC_DECL tmat2x4<T, P> operator* (
167  T const & s,
168  tmat2x4<T, P> const & m);
169 
170  template <typename T, precision P>
171  GLM_FUNC_DECL typename tmat2x4<T, P>::col_type operator* (
172  tmat2x4<T, P> const & m,
173  typename tmat2x4<T, P>::row_type const & v);
174 
175  template <typename T, precision P>
176  GLM_FUNC_DECL typename tmat2x4<T, P>::row_type operator* (
177  typename tmat2x4<T, P>::col_type const & v,
178  tmat2x4<T, P> const & m);
179 
180  template <typename T, precision P>
181  GLM_FUNC_DECL tmat4x4<T, P> operator* (
182  tmat2x4<T, P> const & m1,
183  tmat4x2<T, P> const & m2);
184 
185  template <typename T, precision P>
186  GLM_FUNC_DECL tmat2x4<T, P> operator* (
187  tmat2x4<T, P> const & m1,
188  tmat2x2<T, P> const & m2);
189 
190  template <typename T, precision P>
191  GLM_FUNC_DECL tmat3x4<T, P> operator* (
192  tmat2x4<T, P> const & m1,
193  tmat3x2<T, P> const & m2);
194 
195  template <typename T, precision P>
196  GLM_FUNC_DECL tmat2x4<T, P> operator/ (
197  tmat2x4<T, P> const & m,
198  T s);
199 
200  template <typename T, precision P>
201  GLM_FUNC_DECL tmat2x4<T, P> operator/ (
202  T s,
203  tmat2x4<T, P> const & m);
204 
205  // Unary constant operators
206  template <typename T, precision P>
207  GLM_FUNC_DECL tmat2x4<T, P> const operator- (
208  tmat2x4<T, P> const & m);
209 }//namespace glm
210 
211 #ifndef GLM_EXTERNAL_TEMPLATE
212 #include "type_mat2x4.inl"
213 #endif
GLM_FUNC_DECL T length(vecType< T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).
Definition: _noise.hpp:31
OpenGL Mathematics (glm.g-truc.net)
OpenGL Mathematics (glm.g-truc.net)
OpenGL Mathematics (glm.g-truc.net)