16 using other_float_t =
typename std::conditional<std::is_same<T, float>::value, double,
float>::type;
22 cell[0] = cell[1] = cell[2] = cell[3] = cell[4] = cell[5] = cell[6] =
23 cell[7] = cell[8] =
val;
27 memcpy(cell, vals,
sizeof(T) * 9);
31 for (
int i = 0; i < 9; i++)
36 const T &
operator[](
const size_t i)
const {
return cell[i]; }
38 const T *
Data()
const {
return cell; }
48 m.cell[1] = m.cell[2] = m.cell[3] = m.cell[5] = m.cell[6] = m.cell[7] = 0.0f;
49 m.cell[0] = m.cell[4] = m.cell[8] = 1.0f;
55 m.cell[1] = m.cell[2] = m.cell[3] = m.cell[5] = m.cell[6] = m.cell[7] = 0.0f;
64 m.cell[1] = m.cell[2] = m.cell[3] = m.cell[5] = m.cell[6] = m.cell[7] = 0.0f;
65 m.cell[0] = m.cell[4] = m.cell[8] = scale;
92 m[0] = v.
x * v.
x * (1 - c) + c;
93 m[1] = v.
x * v.
y * (1 - c) - v.
z * s;
94 m[2] = v.
x * v.
z * (1 - c) + v.
y * s;
95 m[3] = v.
y * v.
x * (1 - c) + v.
z * s;
96 m[4] = v.
y * v.
y * (1 - c) + c;
97 m[5] = v.
y * v.
z * (1 - c) - v.
x * s;
98 m[6] = v.
x * v.
z * (1 - c) - v.
y * s;
99 m[7] = v.
y * v.
z * (1 - c) + v.
x * s;
100 m[8] = v.
z * v.
z * (1 - c) + c;
156 m.cell[0] = a.cell[0] * b.cell[0] + a.cell[1] * b.cell[3] + a.cell[2] * b.cell[6];
157 m.cell[1] = a.cell[0] * b.cell[1] + a.cell[1] * b.cell[4] + a.cell[2] * b.cell[7];
158 m.cell[2] = a.cell[0] * b.cell[2] + a.cell[1] * b.cell[5] + a.cell[2] * b.cell[8];
160 m.cell[3] = a.cell[3] * b.cell[0] + a.cell[4] * b.cell[3] + a.cell[5] * b.cell[6];
161 m.cell[4] = a.cell[3] * b.cell[1] + a.cell[4] * b.cell[4] + a.cell[5] * b.cell[7];
162 m.cell[5] = a.cell[3] * b.cell[2] + a.cell[4] * b.cell[5] + a.cell[5] * b.cell[8];
164 m.cell[6] = a.cell[6] * b.cell[0] + a.cell[7] * b.cell[3] + a.cell[8] * b.cell[6];
165 m.cell[7] = a.cell[6] * b.cell[1] + a.cell[7] * b.cell[4] + a.cell[8] * b.cell[7];
166 m.cell[8] = a.cell[6] * b.cell[2] + a.cell[7] * b.cell[5] + a.cell[8] * b.cell[8];
172 out.
x = a.cell[0] * v.
x + a.cell[1] * v.
y + a.cell[2] * v.
z;
173 out.
y = a.cell[3] * v.
x + a.cell[4] * v.
y + a.cell[5] * v.
z;
174 out.
z = a.cell[6] * v.
x + a.cell[7] * v.
y + a.cell[8] * v.
z;
181 out.
x = a.cell[0] * v.
x + a.cell[3] * v.
y + a.cell[6] * v.
z;
182 out.
y = a.cell[1] * v.
x + a.cell[4] * v.
y + a.cell[7] * v.
z;
183 out.
z = a.cell[2] * v.
x + a.cell[5] * v.
y + a.cell[8] * v.
z;
203#define cell2d(x, y) cell[((y * 3) + x)]
208 const T invdet = T(1.0) / det;
211#define idx2d(x, y) ((y * 3) + x)
235 for (
int i = 0; i < 3; i++) {
236 printf(
"%.2f %.2f %.2f\n", cell[3 * i], cell[3 * i + 1], cell[3 * i + 2]);
double val
Definition PrecalcPath.cpp:40
Definition matrix3x3.h:13
friend vector3< T > operator*(const matrix3x3 &a, const vector3< T > &v)
Definition matrix3x3.h:169
T * Data()
Definition matrix3x3.h:39
vector3< T > VectorZ() const
Definition matrix3x3.h:43
friend matrix3x3 operator*(const matrix3x3 &a, const matrix3x3 &b)
Definition matrix3x3.h:153
T & operator[](const size_t i)
Definition matrix3x3.h:35
vector3< T > VectorX() const
Definition matrix3x3.h:41
static matrix3x3 Identity()
Definition matrix3x3.h:45
void Print() const
Definition matrix3x3.h:233
vector3< T > VectorY() const
Definition matrix3x3.h:42
const T & operator[](const size_t i) const
Definition matrix3x3.h:36
static matrix3x3 RotateY(T radians)
Definition matrix3x3.h:120
static matrix3x3 RotateX(T radians)
Definition matrix3x3.h:104
matrix3x3 Normalized() const
Definition matrix3x3.h:223
matrix3x3()
Definition matrix3x3.h:19
friend vector3< T > operator*(const vector3< T > &v, const matrix3x3 &a)
Definition matrix3x3.h:178
static matrix3x3 Scale(T scale)
Definition matrix3x3.h:61
matrix3x3(T val)
Definition matrix3x3.h:20
matrix3x3 Transpose() const
Definition matrix3x3.h:186
static matrix3x3 FromVectors(const vector3< T > &rx, const vector3< T > &ry)
Definition matrix3x3.h:82
static matrix3x3 Rotate(T ang, const vector3< T > &v)
Definition matrix3x3.h:87
matrix3x3 Inverse() const
Definition matrix3x3.h:200
void Renormalize()
Definition matrix3x3.h:229
static matrix3x3 Scale(T x, T y, T z)
Definition matrix3x3.h:52
matrix3x3(const matrix3x3< other_float_t > &m)
Definition matrix3x3.h:29
static matrix3x3 FromVectors(const vector3< T > &rx, const vector3< T > &ry, const vector3< T > &rz)
Definition matrix3x3.h:68
static matrix3x3 RotateZ(T radians)
Definition matrix3x3.h:136
const T * Data() const
Definition matrix3x3.h:38
matrix3x3(const T *vals)
Definition matrix3x3.h:25
T y
Definition vector3.h:18
T x
Definition vector3.h:18
T z
Definition vector3.h:18
vector3 Cross(const vector3 &b) const
Definition vector3.h:117
matrix3x3< double > matrix3x3d
Definition matrix3x3.h:243
matrix3x3< float > matrix3x3f
Definition matrix3x3.h:242