FlukyEngine
type_mat3x4.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<3, 4, T, Q>
15  {
16  typedef vec<4, T, Q> col_type;
17  typedef vec<3, T, Q> row_type;
18  typedef mat<3, 4, T, Q> type;
20  typedef T value_type;
21 
22  private:
23  col_type value[3];
24 
25  public:
26  // -- Accesses --
27 
28  typedef length_t length_type;
29  GLM_FUNC_DECL static GLM_CONSTEXPR length_type length() { return 3; }
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<3, 4, T, P> const& m);
39 
40  GLM_FUNC_DECL explicit GLM_CONSTEXPR mat(T scalar);
41  GLM_FUNC_DECL GLM_CONSTEXPR mat(
42  T x0, T y0, T z0, T w0,
43  T x1, T y1, T z1, T w1,
44  T x2, T y2, T z2, T w2);
45  GLM_FUNC_DECL GLM_CONSTEXPR mat(
46  col_type const& v0,
47  col_type const& v1,
48  col_type const& v2);
49 
50  // -- Conversions --
51 
52  template<
53  typename X1, typename Y1, typename Z1, typename W1,
54  typename X2, typename Y2, typename Z2, typename W2,
55  typename X3, typename Y3, typename Z3, typename W3>
56  GLM_FUNC_DECL GLM_CONSTEXPR mat(
57  X1 x1, Y1 y1, Z1 z1, W1 w1,
58  X2 x2, Y2 y2, Z2 z2, W2 w2,
59  X3 x3, Y3 y3, Z3 z3, W3 w3);
60 
61  template<typename V1, typename V2, typename V3>
62  GLM_FUNC_DECL GLM_CONSTEXPR mat(
63  vec<4, V1, Q> const& v1,
64  vec<4, V2, Q> const& v2,
65  vec<4, V3, Q> const& v3);
66 
67  // -- Matrix conversions --
68 
69  template<typename U, qualifier P>
70  GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 4, U, P> const& m);
71 
72  GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 2, T, Q> const& x);
73  GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 3, T, Q> const& x);
74  GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 4, T, Q> const& x);
75  GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 3, T, Q> const& x);
76  GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 2, T, Q> const& x);
77  GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 4, T, Q> const& x);
78  GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 2, T, Q> const& x);
79  GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 3, T, Q> const& x);
80 
81  // -- Unary arithmetic operators --
82 
83  template<typename U>
84  GLM_FUNC_DECL mat<3, 4, T, Q> & operator=(mat<3, 4, U, Q> const& m);
85  template<typename U>
86  GLM_FUNC_DECL mat<3, 4, T, Q> & operator+=(U s);
87  template<typename U>
88  GLM_FUNC_DECL mat<3, 4, T, Q> & operator+=(mat<3, 4, U, Q> const& m);
89  template<typename U>
90  GLM_FUNC_DECL mat<3, 4, T, Q> & operator-=(U s);
91  template<typename U>
92  GLM_FUNC_DECL mat<3, 4, T, Q> & operator-=(mat<3, 4, U, Q> const& m);
93  template<typename U>
94  GLM_FUNC_DECL mat<3, 4, T, Q> & operator*=(U s);
95  template<typename U>
96  GLM_FUNC_DECL mat<3, 4, T, Q> & operator/=(U s);
97 
98  // -- Increment and decrement operators --
99 
100  GLM_FUNC_DECL mat<3, 4, T, Q> & operator++();
101  GLM_FUNC_DECL mat<3, 4, T, Q> & operator--();
102  GLM_FUNC_DECL mat<3, 4, T, Q> operator++(int);
103  GLM_FUNC_DECL mat<3, 4, T, Q> operator--(int);
104  };
105 
106  // -- Unary operators --
107 
108  template<typename T, qualifier Q>
109  GLM_FUNC_DECL mat<3, 4, T, Q> operator+(mat<3, 4, T, Q> const& m);
110 
111  template<typename T, qualifier Q>
112  GLM_FUNC_DECL mat<3, 4, T, Q> operator-(mat<3, 4, T, Q> const& m);
113 
114  // -- Binary operators --
115 
116  template<typename T, qualifier Q>
117  GLM_FUNC_DECL mat<3, 4, T, Q> operator+(mat<3, 4, T, Q> const& m, T scalar);
118 
119  template<typename T, qualifier Q>
120  GLM_FUNC_DECL mat<3, 4, T, Q> operator+(mat<3, 4, T, Q> const& m1, mat<3, 4, T, Q> const& m2);
121 
122  template<typename T, qualifier Q>
123  GLM_FUNC_DECL mat<3, 4, T, Q> operator-(mat<3, 4, T, Q> const& m, T scalar);
124 
125  template<typename T, qualifier Q>
126  GLM_FUNC_DECL mat<3, 4, T, Q> operator-(mat<3, 4, T, Q> const& m1, mat<3, 4, T, Q> const& m2);
127 
128  template<typename T, qualifier Q>
129  GLM_FUNC_DECL mat<3, 4, T, Q> operator*(mat<3, 4, T, Q> const& m, T scalar);
130 
131  template<typename T, qualifier Q>
132  GLM_FUNC_DECL mat<3, 4, T, Q> operator*(T scalar, mat<3, 4, T, Q> const& m);
133 
134  template<typename T, qualifier Q>
135  GLM_FUNC_DECL typename mat<3, 4, T, Q>::col_type operator*(mat<3, 4, T, Q> const& m, typename mat<3, 4, T, Q>::row_type const& v);
136 
137  template<typename T, qualifier Q>
138  GLM_FUNC_DECL typename mat<3, 4, T, Q>::row_type operator*(typename mat<3, 4, T, Q>::col_type const& v, mat<3, 4, T, Q> const& m);
139 
140  template<typename T, qualifier Q>
141  GLM_FUNC_DECL mat<4, 4, T, Q> operator*(mat<3, 4, T, Q> const& m1, mat<4, 3, T, Q> const& m2);
142 
143  template<typename T, qualifier Q>
144  GLM_FUNC_DECL mat<2, 4, T, Q> operator*(mat<3, 4, T, Q> const& m1, mat<2, 3, T, Q> const& m2);
145 
146  template<typename T, qualifier Q>
147  GLM_FUNC_DECL mat<3, 4, T, Q> operator*(mat<3, 4, T, Q> const& m1, mat<3, 3, T, Q> const& m2);
148 
149  template<typename T, qualifier Q>
150  GLM_FUNC_DECL mat<3, 4, T, Q> operator/(mat<3, 4, T, Q> const& m, T scalar);
151 
152  template<typename T, qualifier Q>
153  GLM_FUNC_DECL mat<3, 4, T, Q> operator/(T scalar, mat<3, 4, T, Q> const& m);
154 
155  // -- Boolean operators --
156 
157  template<typename T, qualifier Q>
158  GLM_FUNC_DECL bool operator==(mat<3, 4, T, Q> const& m1, mat<3, 4, T, Q> const& m2);
159 
160  template<typename T, qualifier Q>
161  GLM_FUNC_DECL bool operator!=(mat<3, 4, T, Q> const& m1, mat<3, 4, T, Q> const& m2);
162 }//namespace glm
163 
164 #ifndef GLM_EXTERNAL_TEMPLATE
165 #include "type_mat3x4.inl"
166 #endif
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