sead
Loading...
Searching...
No Matches
seadMatrixCalcCommon.h
Go to the documentation of this file.
1#ifndef SEAD_MATRIXCALCCOMMON_H_
2#define SEAD_MATRIXCALCCOMMON_H_
3
4#include <math/seadVector.h>
5
6namespace sead {
7
8template <typename T>
10{
11public:
12 typedef typename Policies<T>::Mtx22Base Base;
13
14public:
15 static void makeIdentity(Base& o);
16 static void makeZero(Base& o);
17
18 static void copy(Base& o, const Base& n);
19 static void inverse(Base& o, const Base& n);
20 static void inverseTranspose(Base& o, const Base& n);
21 static void multiply(Base& o, const Base& a, const Base& b);
22 static void transpose(Base& o);
23 static void transposeTo(Base& o, const Base& n);
24
25 static void makeRIdx(Base& o, u32 r);
26};
27
28template <typename T>
30{
31public:
32 typedef typename Policies<T>::Mtx33Base Base;
33 typedef typename Policies<T>::Mtx34Base Mtx34;
34
35 typedef typename Policies<T>::QuatBase Quat;
36 typedef typename Policies<T>::Vec3Base Vec3;
37
38public:
39 static void makeIdentity(Base& o);
40 static void makeZero(Base& o);
41
42 static void copy(Base& o, const Base& n);
43 static void copy(Base& o, const Mtx34& n);
44 static void inverse(Base& o, const Base& n);
45 static void inverseTranspose(Base& o, const Base& n);
46 static void multiply(Base& o, const Base& a, const Base& b);
47 static void multiply(Base& o, const Mtx34& a, const Base& b);
48 static void multiply(Base& o, const Base& a, const Mtx34& b);
49 static void transpose(Base& o);
50 static void transposeTo(Base& o, const Base& n);
51
52 static void makeQ(Base& o, const Quat& q);
53 static void makeR(Base& o, const Vec3& r);
54 static void makeRIdx(Base& o, u32 xr, u32 yr, u32 zr);
55 static void makeRzxyIdx(Base& o, u32 xr, u32 yr, u32 zr);
56 static void makeS(Base& o, const Vec3& s);
57 static void makeSR(Base& o, const Vec3& s, const Vec3& r);
58 static void makeSRIdx(Base& o, const Vec3& s, const Vector3<u32>& r);
59 static void makeSRzxyIdx(Base& o, const Vec3& s, const Vector3<u32>& r);
60 static void toQuat(Quat& q, const Base& n);
61};
62
63template <typename T>
65{
66public:
67 typedef typename Policies<T>::Mtx34Base Base;
68 typedef typename Policies<T>::Mtx33Base Mtx33;
69 typedef typename Policies<T>::Mtx44Base Mtx44;
70
71 typedef typename Policies<T>::QuatBase Quat;
72 typedef typename Policies<T>::Vec3Base Vec3;
73 typedef typename Policies<T>::Vec4Base Vec4;
74
75public:
76 static void makeIdentity(Base& o);
77 static void makeZero(Base& o);
78
79 static void copy(Base& o, const Base& n);
80 static void copy(Base& o, const Mtx33& n, const Vec3& t);
81 static void copy(Base& o, const Mtx44& n);
82 static void inverse(Base& o, const Base& n);
83 static void inverse33(Base& o, const Base& n);
84 static void inverseTranspose(Base& o, const Base& n);
85 static void multiply(Base& o, const Base& a, const Base& b);
86 static void multiply(Base& o, const Mtx33& a, const Base& b);
87 static void multiply(Base& o, const Base& a, const Mtx33& b);
88 static void transpose(Base& o);
89 static void transposeTo(Base& o, const Base& n);
90
91 static void makeQ(Base& o, const Quat& q);
92 static void makeR(Base& o, const Vec3& r);
93 static void makeRIdx(Base& o, u32 xr, u32 yr, u32 zr);
94 static void makeRT(Base& o, const Vec3& r, const Vec3& t);
95 static void makeRTIdx(Base& o, const Vector3<u32>& r, const Vec3& t);
96 static void makeRzxyIdx(Base& o, u32 xr, u32 yr, u32 zr);
97 static void makeRzxyTIdx(Base& o, const Vector3<u32>& r, const Vec3& t);
98 static void makeS(Base& o, const Vec3& s);
99 static void makeSR(Base& o, const Vec3& s, const Vec3& r);
100 static void makeSRIdx(Base& o, const Vec3& s, const Vector3<u32>& r);
101 static void makeSRT(Base& o, const Vec3& s, const Vec3& r, const Vec3& t);
102 static void makeSRTIdx(Base& o, const Vec3& s, const Vector3<u32>& r, const Vec3& t);
103 static void makeSRzxyIdx(Base& o, const Vec3& s, const Vector3<u32>& r);
104 static void makeSRzxyTIdx(Base& o, const Vec3& s, const Vector3<u32>& r, const Vec3& t);
105 static void makeST(Base& o, const Vec3& s, const Vec3& t);
106 static void makeT(Base& o, const Vec3& t);
107 static void toQuat(Quat& q, const Base& n);
108
109 static void scaleAllElements(Base& n, T s);
110 static void scaleBases(Base& n, T sx, T sy, T sz);
111
112 static void multScaleLocal(Base& o, const Base& n, const Vec3& s);
113 static void multTranslationLocal(Base& o, const Base& n, const Vec3& t);
114
115 static void multScaleWorld(Base& o, const Vec3& s, const Base& n);
116 static void multTranslationWorld(Base& o, const Vec3& t, const Base& n);
117
118 static void getBase(Vec3& v, const Base& n, s32 axis);
119 static void getRow(Vec4& v, const Base& n, s32 row);
120 static void getTranslation(Vec3& v, const Base& n);
121
122 static void setBase(Base& n, s32 axis, const Vec3& v);
123 static void setRow(Base& n, const Vec4& v, s32 row);
124 static void setTranslation(Base& n, const Vec3& v);
125};
126
127template <typename T>
129{
130public:
131 typedef typename Policies<T>::Mtx44Base Base;
132 typedef typename Policies<T>::Mtx33Base Mtx33;
133 typedef typename Policies<T>::Mtx34Base Mtx34;
134
135 typedef typename Policies<T>::QuatBase Quat;
136 typedef typename Policies<T>::Vec3Base Vec3;
137 typedef typename Policies<T>::Vec4Base Vec4;
138
139public:
140 static void makeIdentity(Base& o);
141 static void makeZero(Base& o);
142
143 static void copy(Base& o, const Base& n);
144 static void copy(Base& o, const Mtx33& n, const Vec3& t, const Vec4& v);
145 static void copy(Base& o, const Mtx34& n, const Vec4& v);
146 static void inverse(Base& o, const Base& n);
147 static void inverseTranspose(Base& o, const Base& n);
148 static void multiply(Base& o, const Base& a, const Base& b);
149 static void multiply(Base& o, const Mtx34& a, const Base& b);
150 static void multiply(Base& o, const Base& a, const Mtx34& b);
151 static void transpose(Base& o);
152 static void transposeTo(Base& o, const Base& n);
153
154 static void makeQ(Base& o, const Quat& q);
155 static void makeR(Base& o, const Vec3& r);
156 static void makeRIdx(Base& o, u32 xr, u32 yr, u32 zr);
157 static void makeRzxyIdx(Base& o, u32 xr, u32 yr, u32 zr);
158 static void toQuat(Quat& q, const Base& n);
159
160 static void scaleAllElements(Base& n, T s);
161 static void scaleBases(Base& n, T sx, T sy, T sz, T sw);
162
163 static void getCol(Vec4& v, const Base& n, s32 axis);
164 static void getRow(Vec4& v, const Base& n, s32 row);
165
166 static void setCol(Base& n, s32 axis, const Vec4& v);
167 static void setRow(Base& n, const Vec4& v, s32 row);
168};
169
170} // namespace sead
171
172#ifdef __cplusplus
173
174#include <math/seadMatrixCalcCommon.hpp>
175
176#endif // __cplusplus
177
178#endif // SEAD_MATRIXCALCCOMMON_H_
Definition seadMatrixCalcCommon.h:10
static void makeRIdx(Base &o, u32 r)
Definition seadMatrixCalcCommon.hpp:131
static void copy(Base &o, const Base &n)
Definition seadMatrixCalcCommon.hpp:33
static void makeIdentity(Base &o)
Definition seadMatrixCalcCommon.hpp:13
static void inverse(Base &o, const Base &n)
Definition seadMatrixCalcCommon.hpp:43
static void transpose(Base &o)
Definition seadMatrixCalcCommon.hpp:109
static void multiply(Base &o, const Base &a, const Base &b)
Definition seadMatrixCalcCommon.hpp:87
static void transposeTo(Base &o, const Base &n)
Definition seadMatrixCalcCommon.hpp:119
static void inverseTranspose(Base &o, const Base &n)
Definition seadMatrixCalcCommon.hpp:65
static void makeZero(Base &o)
Definition seadMatrixCalcCommon.hpp:23
Policies< T >::Mtx22Base Base
Definition seadMatrixCalcCommon.h:12
Definition seadMatrixCalcCommon.h:30
static void makeR(Base &o, const Vec3 &r)
Definition seadMatrixCalcCommon.hpp:472
static void makeRzxyIdx(Base &o, u32 xr, u32 yr, u32 zr)
Definition seadMatrixCalcCommon.hpp:519
Policies< T >::QuatBase Quat
Definition seadMatrixCalcCommon.h:35
static void makeSR(Base &o, const Vec3 &s, const Vec3 &r)
Definition seadMatrixCalcCommon.hpp:558
static void makeSRIdx(Base &o, const Vec3 &s, const Vector3< u32 > &r)
Definition seadMatrixCalcCommon.hpp:582
static void multiply(Base &o, const Mtx34 &a, const Base &b)
Definition seadMatrixCalcCommon.hpp:324
static void toQuat(Quat &q, const Base &n)
Definition seadMatrixCalcCommon.hpp:628
static void multiply(Base &o, const Base &a, const Base &b)
Definition seadMatrixCalcCommon.hpp:284
static void makeZero(Base &o)
Definition seadMatrixCalcCommon.hpp:162
static void copy(Base &o, const Base &n)
Definition seadMatrixCalcCommon.hpp:178
static void copy(Base &o, const Mtx34 &n)
Definition seadMatrixCalcCommon.hpp:194
static void transposeTo(Base &o, const Base &n)
Definition seadMatrixCalcCommon.hpp:426
static void makeRIdx(Base &o, u32 xr, u32 yr, u32 zr)
Definition seadMatrixCalcCommon.hpp:496
static void inverse(Base &o, const Base &n)
Definition seadMatrixCalcCommon.hpp:210
static void makeQ(Base &o, const Quat &q)
Definition seadMatrixCalcCommon.hpp:444
static void transpose(Base &o)
Definition seadMatrixCalcCommon.hpp:404
Policies< T >::Mtx34Base Mtx34
Definition seadMatrixCalcCommon.h:33
Policies< T >::Vec3Base Vec3
Definition seadMatrixCalcCommon.h:36
static void inverseTranspose(Base &o, const Base &n)
Definition seadMatrixCalcCommon.hpp:247
Policies< T >::Mtx33Base Base
Definition seadMatrixCalcCommon.h:32
static void makeS(Base &o, const Vec3 &s)
Definition seadMatrixCalcCommon.hpp:542
static void multiply(Base &o, const Base &a, const Mtx34 &b)
Definition seadMatrixCalcCommon.hpp:364
static void makeIdentity(Base &o)
Definition seadMatrixCalcCommon.hpp:146
static void makeSRzxyIdx(Base &o, const Vec3 &s, const Vector3< u32 > &r)
Definition seadMatrixCalcCommon.hpp:605
Definition seadMatrixCalcCommon.h:65
static void makeSR(Base &o, const Vec3 &s, const Vec3 &r)
Definition seadMatrixCalcCommon.hpp:1414
Policies< T >::Vec3Base Vec3
Definition seadMatrixCalcCommon.h:72
static void scaleBases(Base &n, T sx, T sy, T sz)
Definition seadMatrixCalcCommon.hpp:1825
static void multiply(Base &o, const Base &a, const Base &b)
Definition seadMatrixCalcCommon.hpp:976
static void makeRIdx(Base &o, u32 xr, u32 yr, u32 zr)
Definition seadMatrixCalcCommon.hpp:1247
static void makeSRzxyTIdx(Base &o, const Vec3 &s, const Vector3< u32 > &r, const Vec3 &t)
Definition seadMatrixCalcCommon.hpp:1551
static void copy(Base &o, const Base &n)
Definition seadMatrixCalcCommon.hpp:754
Policies< T >::Vec4Base Vec4
Definition seadMatrixCalcCommon.h:73
Policies< T >::Mtx33Base Mtx33
Definition seadMatrixCalcCommon.h:68
static void makeSRzxyIdx(Base &o, const Vec3 &s, const Vector3< u32 > &r)
Definition seadMatrixCalcCommon.hpp:1524
Policies< T >::Mtx44Base Mtx44
Definition seadMatrixCalcCommon.h:69
static void makeSRT(Base &o, const Vec3 &s, const Vec3 &r, const Vec3 &t)
Definition seadMatrixCalcCommon.hpp:1469
static void multScaleLocal(Base &o, const Base &n, const Vec3 &s)
Definition seadMatrixCalcCommon.hpp:1706
static void copy(Base &o, const Mtx44 &n)
Definition seadMatrixCalcCommon.hpp:803
static void transposeTo(Base &o, const Base &n)
Definition seadMatrixCalcCommon.hpp:1153
static void makeRzxyTIdx(Base &o, const Vector3< u32 > &r, const Vec3 &t)
Definition seadMatrixCalcCommon.hpp:1356
static void getRow(Vec4 &v, const Base &n, s32 row)
Definition seadMatrixCalcCommon.hpp:1791
static void makeRzxyIdx(Base &o, u32 xr, u32 yr, u32 zr)
Definition seadMatrixCalcCommon.hpp:1329
static void getBase(Vec3 &v, const Base &n, s32 axis)
Definition seadMatrixCalcCommon.hpp:1783
static void copy(Base &o, const Mtx33 &n, const Vec3 &t)
Definition seadMatrixCalcCommon.hpp:784
static void multTranslationWorld(Base &o, const Vec3 &t, const Base &n)
Definition seadMatrixCalcCommon.hpp:1764
static void multTranslationLocal(Base &o, const Base &n, const Vec3 &t)
Definition seadMatrixCalcCommon.hpp:1726
static void transpose(Base &o)
Definition seadMatrixCalcCommon.hpp:1128
static void makeS(Base &o, const Vec3 &s)
Definition seadMatrixCalcCommon.hpp:1383
static void makeQ(Base &o, const Quat &q)
Definition seadMatrixCalcCommon.hpp:1187
static void inverseTranspose(Base &o, const Base &n)
Definition seadMatrixCalcCommon.hpp:935
static void makeR(Base &o, const Vec3 &r)
Definition seadMatrixCalcCommon.hpp:1219
static void makeSRIdx(Base &o, const Vec3 &s, const Vector3< u32 > &r)
Definition seadMatrixCalcCommon.hpp:1442
static void toQuat(Quat &q, const Base &n)
Definition seadMatrixCalcCommon.hpp:1629
static void makeZero(Base &o)
Definition seadMatrixCalcCommon.hpp:735
static void makeST(Base &o, const Vec3 &s, const Vec3 &t)
Definition seadMatrixCalcCommon.hpp:1578
static void multiply(Base &o, const Mtx33 &a, const Base &b)
Definition seadMatrixCalcCommon.hpp:1036
static void makeT(Base &o, const Vec3 &t)
Definition seadMatrixCalcCommon.hpp:1598
static void scaleAllElements(Base &n, T s)
Definition seadMatrixCalcCommon.hpp:1806
static void getTranslation(Vec3 &v, const Base &n)
Definition seadMatrixCalcCommon.hpp:1800
static void makeRTIdx(Base &o, const Vector3< u32 > &r, const Vec3 &t)
Definition seadMatrixCalcCommon.hpp:1302
static void makeIdentity(Base &o)
Definition seadMatrixCalcCommon.hpp:705
static void setRow(Base &n, const Vec4 &v, s32 row)
Definition seadMatrixCalcCommon.hpp:1849
static void makeRT(Base &o, const Vec3 &r, const Vec3 &t)
Definition seadMatrixCalcCommon.hpp:1274
Policies< T >::QuatBase Quat
Definition seadMatrixCalcCommon.h:71
static void setBase(Base &n, s32 axis, const Vec3 &v)
Definition seadMatrixCalcCommon.hpp:1841
static void inverse(Base &o, const Base &n)
Definition seadMatrixCalcCommon.hpp:835
Policies< T >::Mtx34Base Base
Definition seadMatrixCalcCommon.h:67
static void setTranslation(Base &n, const Vec3 &v)
Definition seadMatrixCalcCommon.hpp:1858
static void inverse33(Base &o, const Base &n)
Definition seadMatrixCalcCommon.hpp:894
static void makeSRTIdx(Base &o, const Vec3 &s, const Vector3< u32 > &r, const Vec3 &t)
Definition seadMatrixCalcCommon.hpp:1497
static void multiply(Base &o, const Base &a, const Mtx33 &b)
Definition seadMatrixCalcCommon.hpp:1082
static void multScaleWorld(Base &o, const Vec3 &s, const Base &n)
Definition seadMatrixCalcCommon.hpp:1745
Definition seadMatrixCalcCommon.h:129
static void makeR(Base &o, const Vec3 &r)
Definition seadMatrixCalcCommon.hpp:2470
static void toQuat(Quat &q, const Base &n)
Definition seadMatrixCalcCommon.hpp:2567
static void transposeTo(Base &o, const Base &n)
Definition seadMatrixCalcCommon.hpp:2407
static void scaleAllElements(Base &n, T s)
Definition seadMatrixCalcCommon.hpp:2662
Policies< T >::Mtx44Base Base
Definition seadMatrixCalcCommon.h:131
static void copy(Base &o, const Mtx34 &n, const Vec4 &v)
Definition seadMatrixCalcCommon.hpp:1982
static void multiply(Base &o, const Mtx34 &a, const Base &b)
Definition seadMatrixCalcCommon.hpp:2253
static void makeRzxyIdx(Base &o, u32 xr, u32 yr, u32 zr)
Definition seadMatrixCalcCommon.hpp:2535
static void transpose(Base &o)
Definition seadMatrixCalcCommon.hpp:2371
Policies< T >::Mtx34Base Mtx34
Definition seadMatrixCalcCommon.h:133
Policies< T >::Vec3Base Vec3
Definition seadMatrixCalcCommon.h:136
static void getCol(Vec4 &v, const Base &n, s32 axis)
Definition seadMatrixCalcCommon.hpp:2644
static void scaleBases(Base &n, T sx, T sy, T sz, T sw)
Definition seadMatrixCalcCommon.hpp:2686
static void multiply(Base &o, const Base &a, const Mtx34 &b)
Definition seadMatrixCalcCommon.hpp:2312
static void getRow(Vec4 &v, const Base &n, s32 row)
Definition seadMatrixCalcCommon.hpp:2653
static void copy(Base &o, const Base &n)
Definition seadMatrixCalcCommon.hpp:1923
static void setCol(Base &n, s32 axis, const Vec4 &v)
Definition seadMatrixCalcCommon.hpp:2710
static void makeQ(Base &o, const Quat &q)
Definition seadMatrixCalcCommon.hpp:2433
Policies< T >::Mtx33Base Mtx33
Definition seadMatrixCalcCommon.h:132
static void makeRIdx(Base &o, u32 xr, u32 yr, u32 zr)
Definition seadMatrixCalcCommon.hpp:2503
static void inverseTranspose(Base &o, const Base &n)
Definition seadMatrixCalcCommon.hpp:2101
static void copy(Base &o, const Mtx33 &n, const Vec3 &t, const Vec4 &v)
Definition seadMatrixCalcCommon.hpp:1958
Policies< T >::QuatBase Quat
Definition seadMatrixCalcCommon.h:135
static void setRow(Base &n, const Vec4 &v, s32 row)
Definition seadMatrixCalcCommon.hpp:2719
static void makeIdentity(Base &o)
Definition seadMatrixCalcCommon.hpp:1864
static void multiply(Base &o, const Base &a, const Base &b)
Definition seadMatrixCalcCommon.hpp:2178
static void inverse(Base &o, const Base &n)
Definition seadMatrixCalcCommon.hpp:2024
static void makeZero(Base &o)
Definition seadMatrixCalcCommon.hpp:1899
Policies< T >::Vec4Base Vec4
Definition seadMatrixCalcCommon.h:137
Definition seadMathPolicies.h:8
Definition seadAssert.h:44