0.9.6: type_mat4x2.hpp Source File

| 0.9.6

- Main Page
- Modules
- Files

- File List

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
type_vec4.hpp
OpenGL Mathematics (glm.g-truc.net)
glm::length
GLM_FUNC_DECL T length(vecType< T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).
glm
Definition: _noise.hpp:39
type_vec2.hpp
OpenGL Mathematics (glm.g-truc.net)
type_mat.hpp
OpenGL Mathematics (glm.g-truc.net)