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