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 makeQT(Base& o, const Quat& q, const Vec3& t);
93 static void makeR(Base& o, const Vec3& r);
94 static void makeRIdx(Base& o, u32 xr, u32 yr, u32 zr);
95 static void makeRT(Base& o, const Vec3& r, const Vec3& t);
96 static void makeRTIdx(Base& o, const Vector3<u32>& r, const Vec3& t);
97 static void makeRzxyIdx(Base& o, u32 xr, u32 yr, u32 zr);
98 static void makeRzxyTIdx(Base& o, const Vector3<u32>& r, const Vec3& t);
99 static void makeS(Base& o, const Vec3& s);
100 static void makeSQ(Base& o, const Vec3& s, const Quat& q);
101 static void makeSQT(Base& o, const Vec3& s, const Quat& q, const Vec3& t);
102 static void makeSR(Base& o, const Vec3& s, const Vec3& r);
103 static void makeSRIdx(Base& o, const Vec3& s, const Vector3<u32>& r);
104 static void makeSRT(Base& o, const Vec3& s, const Vec3& r, const Vec3& t);
105 static void makeSRTIdx(Base& o, const Vec3& s, const Vector3<u32>& r, const Vec3& t);
106 static void makeSRzxyIdx(Base& o, const Vec3& s, const Vector3<u32>& r);
107 static void makeSRzxyTIdx(Base& o, const Vec3& s, const Vector3<u32>& r, const Vec3& t);
108 static void makeST(Base& o, const Vec3& s, const Vec3& t);
109 static void makeT(Base& o, const Vec3& t);
110 static void toQuat(Quat& q, const Base& n);
111
112 static void scaleAllElements(Base& n, T s);
113 static void scaleBases(Base& n, T sx, T sy, T sz);
114
115 static void multScaleLocal(Base& o, const Base& n, const Vec3& s);
116 static void multTranslationLocal(Base& o, const Base& n, const Vec3& t);
117
118 static void multScaleWorld(Base& o, const Vec3& s, const Base& n);
119 static void multTranslationWorld(Base& o, const Vec3& t, const Base& n);
120
121 static void getBase(Vec3& v, const Base& n, s32 axis);
122 static void getRow(Vec4& v, const Base& n, s32 row);
123 static void getTranslation(Vec3& v, const Base& n);
124
125 static void setBase(Base& n, s32 axis, const Vec3& v);
126 static void setRow(Base& n, const Vec4& v, s32 row);
127 static void setTranslation(Base& n, const Vec3& v);
128};
129
130template <typename T>
132{
133public:
134 typedef typename Policies<T>::Mtx44Base Base;
135 typedef typename Policies<T>::Mtx33Base Mtx33;
136 typedef typename Policies<T>::Mtx34Base Mtx34;
137
138 typedef typename Policies<T>::QuatBase Quat;
139 typedef typename Policies<T>::Vec3Base Vec3;
140 typedef typename Policies<T>::Vec4Base Vec4;
141
142public:
143 static void makeIdentity(Base& o);
144 static void makeZero(Base& o);
145
146 static void copy(Base& o, const Base& n);
147 static void copy(Base& o, const Mtx33& n, const Vec3& t, const Vec4& v);
148 static void copy(Base& o, const Mtx34& n, const Vec4& v);
149 static void inverse(Base& o, const Base& n);
150 static void inverseTranspose(Base& o, const Base& n);
151 static void multiply(Base& o, const Base& a, const Base& b);
152 static void multiply(Base& o, const Mtx34& a, const Base& b);
153 static void multiply(Base& o, const Base& a, const Mtx34& b);
154 static void transpose(Base& o);
155 static void transposeTo(Base& o, const Base& n);
156
157 static void makeQ(Base& o, const Quat& q);
158 static void makeR(Base& o, const Vec3& r);
159 static void makeRIdx(Base& o, u32 xr, u32 yr, u32 zr);
160 static void makeRzxyIdx(Base& o, u32 xr, u32 yr, u32 zr);
161 static void toQuat(Quat& q, const Base& n);
162
163 static void scaleAllElements(Base& n, T s);
164 static void scaleBases(Base& n, T sx, T sy, T sz, T sw);
165
166 static void getCol(Vec4& v, const Base& n, s32 axis);
167 static void getRow(Vec4& v, const Base& n, s32 row);
168
169 static void setCol(Base& n, s32 axis, const Vec4& v);
170 static void setRow(Base& n, const Vec4& v, s32 row);
171};
172
173} // namespace sead
174
175#ifdef __cplusplus
176
177#include <math/seadMatrixCalcCommon.hpp>
178
179#endif // __cplusplus
180
181#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:1510
Policies< T >::Vec3Base Vec3
Definition seadMatrixCalcCommon.h:72
static void scaleBases(Base &n, T sx, T sy, T sz)
Definition seadMatrixCalcCommon.hpp:1921
static void multiply(Base &o, const Base &a, const Base &b)
Definition seadMatrixCalcCommon.hpp:976
static void makeSQT(Base &o, const Vec3 &s, const Quat &q, const Vec3 &t)
Definition seadMatrixCalcCommon.hpp:1478
static void makeRIdx(Base &o, u32 xr, u32 yr, u32 zr)
Definition seadMatrixCalcCommon.hpp:1279
static void makeSRzxyTIdx(Base &o, const Vec3 &s, const Vector3< u32 > &r, const Vec3 &t)
Definition seadMatrixCalcCommon.hpp:1647
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:1620
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:1565
static void multScaleLocal(Base &o, const Base &n, const Vec3 &s)
Definition seadMatrixCalcCommon.hpp:1802
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:1388
static void getRow(Vec4 &v, const Base &n, s32 row)
Definition seadMatrixCalcCommon.hpp:1887
static void makeRzxyIdx(Base &o, u32 xr, u32 yr, u32 zr)
Definition seadMatrixCalcCommon.hpp:1361
static void getBase(Vec3 &v, const Base &n, s32 axis)
Definition seadMatrixCalcCommon.hpp:1879
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:1860
static void multTranslationLocal(Base &o, const Base &n, const Vec3 &t)
Definition seadMatrixCalcCommon.hpp:1822
static void transpose(Base &o)
Definition seadMatrixCalcCommon.hpp:1128
static void makeS(Base &o, const Vec3 &s)
Definition seadMatrixCalcCommon.hpp:1415
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:1251
static void makeSRIdx(Base &o, const Vec3 &s, const Vector3< u32 > &r)
Definition seadMatrixCalcCommon.hpp:1538
static void toQuat(Quat &q, const Base &n)
Definition seadMatrixCalcCommon.hpp:1725
static void makeZero(Base &o)
Definition seadMatrixCalcCommon.hpp:735
static void makeST(Base &o, const Vec3 &s, const Vec3 &t)
Definition seadMatrixCalcCommon.hpp:1674
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:1694
static void scaleAllElements(Base &n, T s)
Definition seadMatrixCalcCommon.hpp:1902
static void getTranslation(Vec3 &v, const Base &n)
Definition seadMatrixCalcCommon.hpp:1896
static void makeRTIdx(Base &o, const Vector3< u32 > &r, const Vec3 &t)
Definition seadMatrixCalcCommon.hpp:1334
static void makeIdentity(Base &o)
Definition seadMatrixCalcCommon.hpp:705
static void makeSQ(Base &o, const Vec3 &s, const Quat &q)
Definition seadMatrixCalcCommon.hpp:1446
static void setRow(Base &n, const Vec4 &v, s32 row)
Definition seadMatrixCalcCommon.hpp:1945
static void makeRT(Base &o, const Vec3 &r, const Vec3 &t)
Definition seadMatrixCalcCommon.hpp:1306
Policies< T >::QuatBase Quat
Definition seadMatrixCalcCommon.h:71
static void setBase(Base &n, s32 axis, const Vec3 &v)
Definition seadMatrixCalcCommon.hpp:1937
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:1954
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:1593
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:1841
static void makeQT(Base &o, const Quat &q, const Vec3 &t)
Definition seadMatrixCalcCommon.hpp:1219
Definition seadMatrixCalcCommon.h:132
static void makeR(Base &o, const Vec3 &r)
Definition seadMatrixCalcCommon.hpp:2566
static void toQuat(Quat &q, const Base &n)
Definition seadMatrixCalcCommon.hpp:2663
static void transposeTo(Base &o, const Base &n)
Definition seadMatrixCalcCommon.hpp:2503
static void scaleAllElements(Base &n, T s)
Definition seadMatrixCalcCommon.hpp:2758
Policies< T >::Mtx44Base Base
Definition seadMatrixCalcCommon.h:134
static void copy(Base &o, const Mtx34 &n, const Vec4 &v)
Definition seadMatrixCalcCommon.hpp:2078
static void multiply(Base &o, const Mtx34 &a, const Base &b)
Definition seadMatrixCalcCommon.hpp:2349
static void makeRzxyIdx(Base &o, u32 xr, u32 yr, u32 zr)
Definition seadMatrixCalcCommon.hpp:2631
static void transpose(Base &o)
Definition seadMatrixCalcCommon.hpp:2467
Policies< T >::Mtx34Base Mtx34
Definition seadMatrixCalcCommon.h:136
Policies< T >::Vec3Base Vec3
Definition seadMatrixCalcCommon.h:139
static void getCol(Vec4 &v, const Base &n, s32 axis)
Definition seadMatrixCalcCommon.hpp:2740
static void scaleBases(Base &n, T sx, T sy, T sz, T sw)
Definition seadMatrixCalcCommon.hpp:2782
static void multiply(Base &o, const Base &a, const Mtx34 &b)
Definition seadMatrixCalcCommon.hpp:2408
static void getRow(Vec4 &v, const Base &n, s32 row)
Definition seadMatrixCalcCommon.hpp:2749
static void copy(Base &o, const Base &n)
Definition seadMatrixCalcCommon.hpp:2019
static void setCol(Base &n, s32 axis, const Vec4 &v)
Definition seadMatrixCalcCommon.hpp:2806
static void makeQ(Base &o, const Quat &q)
Definition seadMatrixCalcCommon.hpp:2529
Policies< T >::Mtx33Base Mtx33
Definition seadMatrixCalcCommon.h:135
static void makeRIdx(Base &o, u32 xr, u32 yr, u32 zr)
Definition seadMatrixCalcCommon.hpp:2599
static void inverseTranspose(Base &o, const Base &n)
Definition seadMatrixCalcCommon.hpp:2197
static void copy(Base &o, const Mtx33 &n, const Vec3 &t, const Vec4 &v)
Definition seadMatrixCalcCommon.hpp:2054
Policies< T >::QuatBase Quat
Definition seadMatrixCalcCommon.h:138
static void setRow(Base &n, const Vec4 &v, s32 row)
Definition seadMatrixCalcCommon.hpp:2815
static void makeIdentity(Base &o)
Definition seadMatrixCalcCommon.hpp:1960
static void multiply(Base &o, const Base &a, const Base &b)
Definition seadMatrixCalcCommon.hpp:2274
static void inverse(Base &o, const Base &n)
Definition seadMatrixCalcCommon.hpp:2120
static void makeZero(Base &o)
Definition seadMatrixCalcCommon.hpp:1995
Policies< T >::Vec4Base Vec4
Definition seadMatrixCalcCommon.h:140
Definition seadMathPolicies.h:8
Definition seadAssert.h:44