Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
mtx.h
Go to the documentation of this file.
1#ifndef _DOLPHIN_MTX_H_
2#define _DOLPHIN_MTX_H_
3
4#include <dolphin/types.h>
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
10typedef struct {
11 f32 x, y, z;
13
14typedef struct {
15 s16 x, y, z;
17
18typedef struct {
19 f32 x, y, z, w;
21
22typedef f32 Mtx[3][4];
23typedef f32 (*MtxPtr)[4];
24
25typedef f32 Mtx44[4][4];
26typedef f32 (*Mtx44Ptr)[4];
27
28typedef f32 ROMtx[4][3];
29typedef f32 (*ROMtxPtr)[4];
30
31// do these belong in the sdk?
32typedef f32 Mtx33[3][3];
33typedef f32 Mtx23[2][3];
34typedef f32 (*Mtx3P)[3];
35typedef f32 (*MtxP)[4];
36typedef const f32 (*CMtxP)[4];
37typedef f32 QuaternionP[4];
38
44
45#define MTXDegToRad(d) (d * 0.01745329252f)
46#define MTXRadToDeg(r) (r * 57.29577951f)
47
48// MTX
49// C version
50void C_MTXIdentity(Mtx m);
51void C_MTXCopy(const Mtx src, Mtx dst);
52void C_MTXConcat(const Mtx a, const Mtx b, Mtx ab);
53void C_MTXConcatArray(const Mtx a, const Mtx* srcBase, Mtx* dstBase, u32 count);
54void C_MTXTranspose(const Mtx src, Mtx xPose);
55u32 C_MTXInverse(const Mtx src, Mtx inv);
56u32 C_MTXInvXpose(const Mtx src, Mtx invX);
57void C_MTXRotRad(Mtx m, char axis, f32 rad);
58void C_MTXRotTrig(Mtx m, char axis, f32 sinA, f32 cosA);
59void C_MTXRotAxisRad(Mtx m, const Vec* axis, f32 rad);
60void C_MTXTrans(Mtx m, f32 xT, f32 yT, f32 zT);
61void C_MTXTransApply(const Mtx src, Mtx dst, f32 xT, f32 yT, f32 zT);
62void C_MTXScale(Mtx m, f32 xS, f32 yS, f32 zS);
63void C_MTXScaleApply(const Mtx src, Mtx dst, f32 xS, f32 yS, f32 zS);
64void C_MTXQuat(Mtx m, const Quaternion* q);
65void C_MTXReflect(Mtx m, const Vec* p, const Vec* n);
66
67// PS version
69void PSMTXCopy(const Mtx src, Mtx dst);
70void PSMTXConcat(const Mtx a, const Mtx b, Mtx ab);
71void PSMTXConcatArray(const Mtx a, const Mtx* srcBase, Mtx* dstBase, u32 count);
72void PSMTXTranspose(const Mtx src, Mtx xPose);
75void PSMTXRotRad(Mtx m, char axis, f32 rad);
76void PSMTXRotTrig(Mtx m, char axis, f32 sinA, f32 cosA);
77void PSMTXRotAxisRad(Mtx m, const Vec* axis, f32 rad);
78void PSMTXTrans(Mtx m, f32 xT, f32 yT, f32 zT);
79void PSMTXTransApply(const Mtx src, Mtx dst, f32 xT, f32 yT, f32 zT);
80void PSMTXScale(Mtx m, f32 xS, f32 yS, f32 zS);
81void PSMTXScaleApply(const Mtx src, Mtx dst, f32 xS, f32 yS, f32 zS);
82void PSMTXQuat(Mtx m, const Quaternion* q);
83void PSMTXReflect(Mtx m, const Vec* p, const Vec* n);
84
85#ifdef DEBUG
86#define MTXIdentity C_MTXIdentity
87#define MTXCopy C_MTXCopy
88#define MTXConcat C_MTXConcat
89#define MTXInverse C_MTXInverse
90#define MTXTranspose C_MTXTranspose
91#define MTXInverse C_MTXInverse
92#define MTXInvXpose C_MTXInvXpose
93#define MTXRotRad C_MTXRotRad
94#define MTXRotTrig C_MTXRotTrig
95#define MTXRotAxisRad C_MTXRotAxisRad
96#define MTXTrans C_MTXTrans
97#define MTXTransApply C_MTXTransApply
98#define MTXScale C_MTXScale
99#define MTXScaleApply C_MTXScaleApply
100#define MTXQuat C_MTXQuat
101#define MTXReflect C_MTXReflect
102#else
103#define MTXIdentity PSMTXIdentity
104#define MTXCopy PSMTXCopy
105#define MTXConcat PSMTXConcat
106#define MTXInverse PSMTXInverse
107#define MTXTranspose PSMTXTranspose
108#define MTXInverse PSMTXInverse
109#define MTXInvXpose PSMTXInvXpose
110#define MTXRotRad PSMTXRotRad
111#define MTXRotTrig PSMTXRotTrig
112#define MTXRotAxisRad PSMTXRotAxisRad
113#define MTXTrans PSMTXTrans
114#define MTXTransApply PSMTXTransApply
115#define MTXScale PSMTXScale
116#define MTXScaleApply PSMTXScaleApply
117#define MTXQuat PSMTXQuat
118#define MTXReflect PSMTXReflect
119#endif
120
121// C versions only
122void C_MTXLookAt(Mtx m, const Point3d* camPos, const Vec* camUp, const Point3d* target);
123void C_MTXLightFrustum(Mtx m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 scaleS, f32 scaleT, f32 transS, f32 transT);
124void C_MTXLightPerspective(Mtx m, f32 fovY, f32 aspect, f32 scaleS, f32 scaleT, f32 transS, f32 transT);
125void C_MTXLightOrtho(Mtx m, f32 t, f32 b, f32 l, f32 r, f32 scaleS, f32 scaleT, f32 transS, f32 transT);
126
127#define MTXLookAt C_MTXLookAt
128#define MTXLightFrustum C_MTXLightFrustum
129#define MTXLightPerspective C_MTXLightPerspective
130#define MTXLightOrtho C_MTXLightOrtho
131
132// MTXVEC
133// C versions
134void C_MTXMultVec(const Mtx m, const Vec* src, Vec* dst);
135void C_MTXMultVecArray(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count);
136void C_MTXMultVecSR(const Mtx m, const Vec* src, Vec* dst);
137void C_MTXMultVecArraySR(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count);
138
139// PS versions
140void PSMTXMultVec(const Mtx m, const Vec* src, Vec* dst);
141void PSMTXMultVecArray(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count);
142void PSMTXMultVecSR(const Mtx m, const Vec* src, Vec* dst);
143void PSMTXMultVecArraySR(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count);
144
145#ifdef DEBUG
146#define MTXMultVec C_MTXMultVec
147#define MTXMultVecArray C_MTXMultVecArray
148#define MTXMultVecSR C_MTXMultVecSR
149#define MTXMultVecArraySR C_MTXMultVecArraySR
150#else
151#define MTXMultVec PSMTXMultVec
152#define MTXMultVecArray PSMTXMultVecArray
153#define MTXMultVecSR PSMTXMultVecSR
154#define MTXMultVecArraySR PSMTXMultVecArraySR
155#endif
156
157// MTX44
158// C versions
160void C_MTX44Copy(const Mtx44 src, Mtx44 dst);
161void C_MTX44Concat(const Mtx44 a, const Mtx44 b, Mtx44 ab);
162void C_MTX44Transpose(const Mtx44 src, Mtx44 xPose);
163void C_MTX44Trans(Mtx44 m, f32 xT, f32 yT, f32 zT);
164void C_MTX44TransApply(const Mtx44 src, Mtx44 dst, f32 xT, f32 yT, f32 zT);
165void C_MTX44Scale(Mtx44 m, f32 xS, f32 yS, f32 zS);
166void C_MTX44ScaleApply(const Mtx44 src, Mtx44 dst, f32 xS, f32 yS, f32 zS);
167void C_MTX44RotRad(Mtx44 m, char axis, f32 rad);
168void C_MTX44RotTrig(Mtx44 m, char axis, f32 sinA, f32 cosA);
169void C_MTX44RotAxisRad(Mtx44 m, const Vec* axis, f32 rad);
170
171// PS versions
173void PSMTX44Copy(const Mtx44 src, Mtx44 dst);
174void PSMTX44Concat(const Mtx44 a, const Mtx44 b, Mtx44 ab);
175void PSMTX44Transpose(const Mtx44 src, Mtx44 xPose);
176void PSMTX44Trans(Mtx44 m, f32 xT, f32 yT, f32 zT);
177void PSMTX44TransApply(const Mtx44 src, Mtx44 dst, f32 xT, f32 yT, f32 zT);
178void PSMTX44Scale(Mtx44 m, f32 xS, f32 yS, f32 zS);
179void PSMTX44ScaleApply(const Mtx44 src, Mtx44 dst, f32 xS, f32 yS, f32 zS);
180void PSMTX44RotRad(Mtx44 m, char axis, f32 rad);
181void PSMTX44RotTrig(Mtx44 m, char axis, f32 sinA, f32 cosA);
182void PSMTX44RotAxisRad(Mtx44 m, const Vec* axis, f32 rad);
183
184#ifdef DEBUG
185#define MTX44Identity C_MTX44Identity
186#define MTX44Copy C_MTX44Copy
187#define MTX44Concat C_MTX44Concat
188#define MTX44Transpose C_MTX44Transpose
189#define MTX44Trans C_MTX44Trans
190#define MTX44TransApply C_MTX44TransApply
191#define MTX44Scale C_MTX44Scale
192#define MTX44ScaleApply C_MTX44ScaleApply
193#define MTX44RotRad C_MTX44RotRad
194#define MTX44RotTrig C_MTX44RotTrig
195#define MTX44RotAxisRad C_MTX44RotAxisRad
196#else
197#define MTX44Identity PSMTX44Identity
198#define MTX44Copy PSMTX44Copy
199#define MTX44Concat PSMTX44Concat
200#define MTX44Transpose PSMTX44Transpose
201#define MTX44Trans PSMTX44Trans
202#define MTX44TransApply PSMTX44TransApply
203#define MTX44Scale PSMTX44Scale
204#define MTX44ScaleApply PSMTX44ScaleApply
205#define MTX44RotRad PSMTX44RotRad
206#define MTX44RotTrig PSMTX44RotTrig
207#define MTX44RotAxisRad PSMTX44RotAxisRad
208#endif
209
210// C versions only
211void C_MTXFrustum(Mtx44 m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 f);
212void C_MTXPerspective(Mtx44 m, f32 fovY, f32 aspect, f32 n, f32 f);
213void C_MTXOrtho(Mtx44 m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 f);
214u32 C_MTX44Inverse(const Mtx44 src, Mtx44 inv);
215
216#define MTXFrustum C_MTXFrustum
217#define MTXPerspective C_MTXPerspective
218#define MTXOrtho C_MTXOrtho
219#define MTX44Inverse C_MTX44Inverse
220
221// MTX44VEC
222// C versions
223void C_MTX44MultVec(const Mtx44 m, const Vec* src, Vec* dst);
224void C_MTX44MultVecArray(const Mtx44 m, const Vec* srcBase, Vec* dstBase, u32 count);
225void C_MTX44MultVecSR(const Mtx44 m, const Vec* src, Vec* dst);
226void C_MTX44MultVecArraySR(const Mtx44 m, const Vec* srcBase, Vec* dstBase, u32 count);
227
228// PS versions
229void PSMTX44MultVec(const Mtx44 m, const Vec* src, Vec* dst);
230void PSMTX44MultVecArray(const Mtx44 m, const Vec* srcBase, Vec* dstBase, u32 count);
231void PSMTX44MultVecSR(const Mtx44 m, const Vec* src, Vec* dst);
232void PSMTX44MultVecArraySR(const Mtx44 m, const Vec* srcBase, Vec* dstBase, u32 count);
233
234#ifdef DEBUG
235#define MTX44MultVec C_MTX44MultVec
236#define MTX44MultVecArray C_MTX44MultVecArray
237#define MTX44MultVecSR C_MTX44MultVecSR
238#define MTX44MultVecArraySR C_MTX44MultVecArraySR
239#else
240#define MTX44MultVec PSMTX44MultVec
241#define MTX44MultVecArray PSMTX44MultVecArray
242#define MTX44MultVecSR PSMTX44MultVecSR
243#define MTX44MultVecArraySR PSMTX44MultVecArraySR
244#endif
245
246// PSMTX
248void PSMTXROMultVecArray(const ROMtx m, const Vec* srcBase, Vec* dstBase, u32 count);
249void PSMTXROSkin2VecArray(const ROMtx m0, const ROMtx m1, const f32* wtBase, const Vec* srcBase, Vec* dstBase, u32 count);
250void PSMTXROMultS16VecArray(const Mtx m, const S16Vec* srcBase, Vec* dstBase, u32 count);
251void PSMTXMultS16VecArray(const ROMtx* m, const S16Vec* srcBase, Vec* dstBase, u32 count);
252
253// MTXSTACK
254void MTXInitStack(MTXStack* sPtr, u32 numMtx);
255MtxPtr MTXPush(MTXStack* sPtr, const Mtx m);
256MtxPtr MTXPushFwd(MTXStack* sPtr, const Mtx m);
257MtxPtr MTXPushInv(MTXStack* sPtr, const Mtx m);
258MtxPtr MTXPushInvXpose(MTXStack* sPtr, const Mtx m);
259MtxPtr MTXPop(MTXStack* sPtr);
260MtxPtr MTXGetStackPtr(const MTXStack* sPtr);
261
262// VEC
263// C versions
264void C_VECAdd(const Vec* a, const Vec* b, Vec* ab);
265void C_VECSubtract(const Vec* a, const Vec* b, Vec* a_b);
266void C_VECScale(const Vec* src, Vec* dst, f32 scale);
267void C_VECNormalize(const Vec* src, Vec* unit);
268f32 C_VECSquareMag(const Vec* v);
269f32 C_VECMag(const Vec* v);
270f32 C_VECDotProduct(const Vec* a, const Vec* b);
271void C_VECCrossProduct(const Vec* a, const Vec* b, Vec* axb);
272f32 C_VECSquareDistance(const Vec* a, const Vec* b);
273f32 C_VECDistance(const Vec* a, const Vec* b);
274
275// PS versions
276void PSVECAdd(const Vec* a, const Vec* b, Vec* ab);
277void PSVECSubtract(const Vec* a, const Vec* b, Vec* a_b);
278void PSVECScale(const Vec* src, Vec* dst, f32 scale);
279void PSVECNormalize(const Vec* src, Vec* dst);
282f32 PSVECDotProduct(const Vec* a, const Vec* b);
283void PSVECCrossProduct(const Vec* a, const Vec* b, Vec* axb);
284f32 PSVECSquareDistance(const Vec* a, const Vec* b);
285f32 PSVECDistance(const Vec* a, const Vec* b);
286
287#ifdef DEBUG
288#define VECAdd C_VECAdd
289#define VECSubtract C_VECSubtract
290#define VECScale C_VECScale
291#define VECNormalize C_VECNormalize
292#define VECSquareMag C_VECSquareMag
293#define VECMag C_VECMag
294#define VECDotProduct C_VECDotProduct
295#define VECCrossProduct C_VECCrossProduct
296#define VECSquareDistance C_VECSquareDistance
297#define VECDistance C_VECDistance
298#else
299#define VECAdd PSVECAdd
300#define VECSubtract PSVECSubtract
301#define VECScale PSVECScale
302#define VECNormalize PSVECNormalize
303#define VECSquareMag PSVECSquareMag
304#define VECMag PSVECMag
305#define VECDotProduct PSVECDotProduct
306#define VECCrossProduct PSVECCrossProduct
307#define VECSquareDistance PSVECSquareDistance
308#define VECDistance PSVECDistance
309#endif
310
311void C_VECHalfAngle(const Vec* a, const Vec* b, Vec* half);
312void C_VECReflect(const Vec* src, const Vec* normal, Vec* dst);
313
314#define VECHalfAngle C_VECHalfAngle
315#define VECReflect C_VECReflect
316
317// QUAT
318// C versions
319void C_QUATAdd(const Quaternion* p, const Quaternion* q, Quaternion* r);
320void C_QUATSubtract(const Quaternion* p, const Quaternion* q, Quaternion* r);
321void C_QUATMultiply(const Quaternion* p, const Quaternion* q, Quaternion* pq);
322void C_QUATScale(const Quaternion* q, Quaternion* r, f32 scale);
324void C_QUATNormalize(const Quaternion* src, Quaternion* unit);
325void C_QUATInverse(const Quaternion* src, Quaternion* inv);
326void C_QUATDivide(const Quaternion* p, const Quaternion* q, Quaternion* r);
327
328// PS versions
332void PSQUATScale(const Quaternion* q, Quaternion* r, f32 scale);
336void PSQUATDivide(const Quaternion* p, const Quaternion* q, Quaternion* r);
337
338#ifdef DEBUG
339#define QUATAdd C_QUATAdd
340#define QUATSubtract C_QUATSubtract
341#define QUATMultiply C_QUATMultiply
342#define QUATScale C_QUATScale
343#define QUATDotProduct C_QUATDotProduct
344#define QUATNormalize C_QUATNormalize
345#define QUATInverse C_QUATInverse
346#define QUATDivide C_QUATDivide
347#else
348#define QUATAdd PSQUATAdd
349#define QUATSubtract PSQUATSubtract
350#define QUATMultiply PSQUATMultiply
351#define QUATScale PSQUATScale
352#define QUATDotProduct PSQUATDotProduct
353#define QUATNormalize PSQUATNormalize
354#define QUATInverse PSQUATInverse
355#define QUATDivide PSQUATDivide
356#endif
357
358// C versions only
359void C_QUATExp(const Quaternion* q, Quaternion* r);
360void C_QUATLogN(const Quaternion* q, Quaternion* r);
361void C_QUATMakeClosest(const Quaternion* q, const Quaternion* qto, Quaternion* r);
362void C_QUATRotAxisRad(Quaternion* r, const Vec* axis, f32 rad);
363void C_QUATMtx(Quaternion* r, const Mtx m);
364void C_QUATLerp(const Quaternion* p, const Quaternion* q, Quaternion* r, f32 t);
365void C_QUATSlerp(const Quaternion* p, const Quaternion* q, Quaternion* r, f32 t);
366void C_QUATSquad(const Quaternion* p, const Quaternion* a, const Quaternion* b, const Quaternion* q, Quaternion* r, f32 t);
367void C_QUATCompA(const Quaternion* qprev, const Quaternion* q, const Quaternion* qnext, Quaternion* a);
368
369#define QUATExp C_QUATExp
370#define QUATLogN C_QUATLogN
371#define QUATMakeClosest C_QUATMakeClosest
372#define QUATRotAxisRad C_QUATRotAxisRad
373#define QUATMtx C_QUATMtx
374#define QUATLerp C_QUATLerp
375#define QUATSlerp C_QUATSlerp
376#define QUATSquad C_QUATSquad
377#define QUATCompA C_QUATCompA
378
379#ifdef __cplusplus
380}
381#endif
382
383#endif
u32 dest
Definition GXTev.c:8
const void * src
Definition __os.h:116
void PSMTXInverse()
void PSVECSquareDistance()
void PSMTXQuat()
void PSMTXTrans()
void PSVECSquareMag()
void PSMTXMultVec()
void PSMTXConcat()
void PSMTXCopy()
static void * target
Definition d_a_npc_cd2.cpp:1908
static SECTION_DATA u8 normal[12]
Definition d_a_npc_pouya.cpp:546
void PSVECAdd()
q
Definition e_acos.c:99
r
Definition e_acos.c:100
p
Definition e_acos.c:98
t
Definition e_asin.c:95
double x double x
Definition e_atan2.c:58
int m
Definition e_atan2.c:62
double x double y
Definition e_atan2.c:58
n
Definition e_fmod.c:112
double v
Definition e_pow.c:163
z
Definition e_pow.c:390
a
Definition k_cos.c:89
static const static double double half
Definition k_sin.c:49
struct Vec Vec
Definition m_Do_lib.h:8
void PSMTXReflect(Mtx m, const Vec *p, const Vec *n)
const f32(* CMtxP)[4]
Definition mtx.h:36
u32 C_MTX44Inverse(const Mtx44 src, Mtx44 inv)
Definition mtx44.c:358
f32 C_VECMag(const Vec *v)
Definition vec.c:134
MtxPtr MTXPush(MTXStack *sPtr, const Mtx m)
Definition mtxstack.c:14
void PSVECScale(const Vec *src, Vec *dst, f32 scale)
f32 PSVECMag(const Vec *v)
struct Vec Point3d
f32 C_QUATDotProduct(const Quaternion *p, const Quaternion *q)
Definition quat.c:137
f32(* Mtx44Ptr)[4]
Definition mtx.h:26
void C_MTXRotAxisRad(Mtx m, const Vec *axis, f32 rad)
Definition mtx.c:749
void PSMTX44ScaleApply(const Mtx44 src, Mtx44 dst, f32 xS, f32 yS, f32 zS)
void PSMTX44RotAxisRad(Mtx44 m, const Vec *axis, f32 rad)
Definition mtx44.c:881
f32 Mtx33[3][3]
Definition mtx.h:32
MtxPtr MTXGetStackPtr(const MTXStack *sPtr)
Definition mtxstack.c:104
void C_VECAdd(const Vec *a, const Vec *b, Vec *ab)
Definition vec.c:5
f32 C_VECSquareMag(const Vec *v)
Definition vec.c:111
f32 PSVECDistance(const Vec *a, const Vec *b)
void PSMTXMultS16VecArray(const ROMtx *m, const S16Vec *srcBase, Vec *dstBase, u32 count)
void PSMTX44Trans(Mtx44 m, f32 xT, f32 yT, f32 zT)
struct S16Vec * S16VecPtr
void C_MTX44Scale(Mtx44 m, f32 xS, f32 yS, f32 zS)
Definition mtx44.c:518
void C_MTXMultVecSR(const Mtx m, const Vec *src, Vec *dst)
Definition mtxvec.c:106
void C_MTXConcat(const Mtx a, const Mtx b, Mtx ab)
Definition mtx.c:78
void C_MTXCopy(const Mtx src, Mtx dst)
Definition mtx.c:44
void C_QUATMakeClosest(const Quaternion *q, const Quaternion *qto, Quaternion *r)
Definition quat.c:326
void PSQUATNormalize(const Quaternion *src, Quaternion *unit)
void C_MTXMultVecArray(const Mtx m, const Vec *srcBase, Vec *dstBase, u32 count)
Definition mtxvec.c:45
void C_VECHalfAngle(const Vec *a, const Vec *b, Vec *half)
Definition vec.c:223
u32 C_MTXInvXpose(const Mtx src, Mtx invX)
Definition mtx.c:456
void C_MTX44ScaleApply(const Mtx44 src, Mtx44 dst, f32 xS, f32 yS, f32 zS)
Definition mtx44.c:559
void PSVECCrossProduct(const Vec *a, const Vec *b, Vec *axb)
void PSMTX44MultVec(const Mtx44 m, const Vec *src, Vec *dst)
u32 C_MTXInverse(const Mtx src, Mtx inv)
Definition mtx.c:346
f32(* MtxP)[4]
Definition mtx.h:35
void PSMTXReorder(const Mtx src, ROMtx dest)
void C_MTX44MultVec(const Mtx44 m, const Vec *src, Vec *dst)
Definition mtx44vec.c:5
void C_MTX44RotAxisRad(Mtx44 m, const Vec *axis, f32 rad)
Definition mtx44.c:766
void C_MTXQuat(Mtx m, const Quaternion *q)
Definition mtx.c:940
struct Quaternion Qtrn
void PSMTX44Concat(const Mtx44 a, const Mtx44 b, Mtx44 ab)
MtxPtr MTXPushFwd(MTXStack *sPtr, const Mtx m)
Definition mtxstack.c:31
void C_MTXConcatArray(const Mtx a, const Mtx *srcBase, Mtx *dstBase, u32 count)
Definition mtx.c:167
struct Vec * VecPtr
void C_MTXLightPerspective(Mtx m, f32 fovY, f32 aspect, f32 scaleS, f32 scaleT, f32 transS, f32 transT)
Definition mtx.c:1152
void C_QUATAdd(const Quaternion *p, const Quaternion *q, Quaternion *r)
Definition quat.c:5
void C_QUATSlerp(const Quaternion *p, const Quaternion *q, Quaternion *r, f32 t)
Definition quat.c:421
void C_MTXIdentity(Mtx m)
Definition mtx.c:10
void PSMTXMultVecArray(const Mtx m, const Vec *srcBase, Vec *dstBase, u32 count)
void C_QUATMultiply(const Quaternion *p, const Quaternion *q, Quaternion *pq)
Definition quat.c:57
f32 PSVECDotProduct(const Vec *a, const Vec *b)
void PSMTXIdentity(Mtx m)
void C_QUATExp(const Quaternion *q, Quaternion *r)
Definition quat.c:282
void C_QUATNormalize(const Quaternion *src, Quaternion *unit)
Definition quat.c:160
void PSQUATDivide(const Quaternion *p, const Quaternion *q, Quaternion *r)
Definition quat.c:275
void C_MTX44Trans(Mtx44 m, f32 xT, f32 yT, f32 zT)
Definition mtx44.c:417
void PSMTXRotRad(Mtx m, char axis, f32 rad)
Definition mtx.c:564
void C_MTXTransApply(const Mtx src, Mtx dst, f32 xT, f32 yT, f32 zT)
Definition mtx.c:822
void PSQUATAdd(const Quaternion *p, const Quaternion *q, Quaternion *r)
void PSMTXTranspose(const Mtx src, Mtx xPose)
f32 C_VECDistance(const Vec *a, const Vec *b)
Definition vec.c:301
void C_QUATSubtract(const Quaternion *p, const Quaternion *q, Quaternion *r)
Definition quat.c:31
void C_MTXMultVecArraySR(const Mtx m, const Vec *srcBase, Vec *dstBase, u32 count)
Definition mtxvec.c:146
void C_MTXFrustum(Mtx44 m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 f)
Definition mtx44.c:7
void PSMTXConcatArray(const Mtx a, const Mtx *srcBase, Mtx *dstBase, u32 count)
f32(* MtxPtr)[4]
Definition mtx.h:23
struct Quaternion * QuaternionPtr
void C_MTX44MultVecSR(const Mtx44 m, const Vec *src, Vec *dst)
Definition mtx44vec.c:146
void C_MTXScaleApply(const Mtx src, Mtx dst, f32 xS, f32 yS, f32 zS)
Definition mtx.c:897
void PSMTX44MultVecSR(const Mtx44 m, const Vec *src, Vec *dst)
void PSMTX44Scale(Mtx44 m, f32 xS, f32 yS, f32 zS)
void C_VECCrossProduct(const Vec *a, const Vec *b, Vec *axb)
Definition vec.c:191
void C_MTXMultVec(const Mtx m, const Vec *src, Vec *dst)
Definition mtxvec.c:5
void C_MTX44Concat(const Mtx44 a, const Mtx44 b, Mtx44 ab)
Definition mtx44.c:178
void PSMTXROMultVecArray(const ROMtx m, const Vec *srcBase, Vec *dstBase, u32 count)
u32 PSMTXInvXpose(const Mtx src, Mtx invX)
void C_QUATMtx(Quaternion *r, const Mtx m)
Definition quat.c:362
void PSMTXRotTrig(Mtx m, char axis, f32 sinA, f32 cosA)
MtxPtr MTXPushInvXpose(MTXStack *sPtr, const Mtx m)
Definition mtxstack.c:67
void PSMTX44RotTrig(Mtx44 m, char axis, f32 sinA, f32 cosA)
void PSMTX44Copy(const Mtx44 src, Mtx44 dst)
void C_QUATDivide(const Quaternion *p, const Quaternion *q, Quaternion *r)
Definition quat.c:265
void PSQUATInverse(const Quaternion *src, Quaternion *inv)
void PSMTX44MultVecArraySR(const Mtx44 m, const Vec *srcBase, Vec *dstBase, u32 count)
void C_MTXLightOrtho(Mtx m, f32 t, f32 b, f32 l, f32 r, f32 scaleS, f32 scaleT, f32 transS, f32 transT)
Definition mtx.c:1177
void PSMTXScale(Mtx m, f32 xS, f32 yS, f32 zS)
void C_MTXReflect(Mtx m, const Vec *p, const Vec *n)
Definition mtx.c:1034
f32 ROMtx[4][3]
Definition mtx.h:28
void C_QUATRotAxisRad(Quaternion *r, const Vec *axis, f32 rad)
Definition quat.c:343
void C_MTX44MultVecArray(const Mtx44 m, const Vec *srcBase, Vec *dstBase, u32 count)
Definition mtx44vec.c:58
void PSMTXRotAxisRad(Mtx m, const Vec *axis, f32 rad)
Definition mtx.c:740
void C_MTX44Transpose(const Mtx44 src, Mtx44 xPose)
Definition mtx44.c:286
void PSMTXScaleApply(const Mtx src, Mtx dst, f32 xS, f32 yS, f32 zS)
void PSQUATScale(const Quaternion *q, Quaternion *r, f32 scale)
void C_MTXPerspective(Mtx44 m, f32 fovY, f32 aspect, f32 n, f32 f)
Definition mtx44.c:35
void C_MTX44RotRad(Mtx44 m, char axis, f32 rad)
Definition mtx44.c:614
void PSMTX44Transpose(const Mtx44 src, Mtx44 xPose)
void PSMTXMultVecArraySR(const Mtx m, const Vec *srcBase, Vec *dstBase, u32 count)
void PSVECNormalize(const Vec *src, Vec *dst)
void C_QUATScale(const Quaternion *q, Quaternion *r, f32 scale)
Definition quat.c:114
void PSMTXROSkin2VecArray(const ROMtx m0, const ROMtx m1, const f32 *wtBase, const Vec *srcBase, Vec *dstBase, u32 count)
void C_QUATInverse(const Quaternion *src, Quaternion *inv)
Definition quat.c:210
f32 Mtx23[2][3]
Definition mtx.h:33
f32 PSQUATDotProduct(const Quaternion *p, const Quaternion *q)
void C_MTX44Identity(Mtx44 m)
Definition mtx44.c:94
struct Quaternion * QtrnPtr
void PSMTX44MultVecArray(const Mtx44 m, const Vec *srcBase, Vec *dstBase, u32 count)
void PSMTX44RotRad(Mtx44 m, char axis, f32 rad)
Definition mtx44.c:624
struct Vec * Point3dPtr
void C_MTXRotRad(Mtx m, char axis, f32 rad)
Definition mtx.c:554
void C_VECReflect(const Vec *src, const Vec *normal, Vec *dst)
Definition vec.c:250
f32(* ROMtxPtr)[4]
Definition mtx.h:29
void C_MTX44MultVecArraySR(const Mtx44 m, const Vec *srcBase, Vec *dstBase, u32 count)
Definition mtx44vec.c:185
f32(* Mtx3P)[3]
Definition mtx.h:34
void PSQUATMultiply(const Quaternion *p, const Quaternion *q, Quaternion *pq)
void C_VECScale(const Vec *src, Vec *dst, f32 scale)
Definition vec.c:45
f32 C_VECSquareDistance(const Vec *a, const Vec *b)
Definition vec.c:273
void PSVECSubtract(const Vec *a, const Vec *b, Vec *a_b)
f32 C_VECDotProduct(const Vec *a, const Vec *b)
Definition vec.c:172
void C_QUATCompA(const Quaternion *qprev, const Quaternion *q, const Quaternion *qnext, Quaternion *a)
Definition quat.c:470
void C_MTXRotTrig(Mtx m, char axis, f32 sinA, f32 cosA)
Definition mtx.c:571
void C_QUATSquad(const Quaternion *p, const Quaternion *a, const Quaternion *b, const Quaternion *q, Quaternion *r, f32 t)
Definition quat.c:454
void C_MTX44Copy(const Mtx44 src, Mtx44 dst)
Definition mtx44.c:133
void C_MTXLookAt(Mtx m, const Point3d *camPos, const Vec *camUp, const Point3d *target)
Definition mtx.c:1098
void PSMTX44TransApply(const Mtx44 src, Mtx44 dst, f32 xT, f32 yT, f32 zT)
void MTXInitStack(MTXStack *sPtr, u32 numMtx)
Definition mtxstack.c:5
void C_MTXScale(Mtx m, f32 xS, f32 yS, f32 zS)
Definition mtx.c:866
void C_MTXTrans(Mtx m, f32 xT, f32 yT, f32 zT)
Definition mtx.c:788
f32 Mtx44[4][4]
Definition mtx.h:25
void C_MTXOrtho(Mtx44 m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 f)
Definition mtx44.c:66
void PSMTXTransApply(const Mtx src, Mtx dst, f32 xT, f32 yT, f32 zT)
void PSMTXROMultS16VecArray(const Mtx m, const S16Vec *srcBase, Vec *dstBase, u32 count)
f32 QuaternionP[4]
Definition mtx.h:37
void C_VECNormalize(const Vec *src, Vec *unit)
Definition vec.c:66
void PSMTX44Identity(Mtx44 m)
void C_MTX44TransApply(const Mtx44 src, Mtx44 dst, f32 xT, f32 yT, f32 zT)
Definition mtx44.c:462
void C_QUATLogN(const Quaternion *q, Quaternion *r)
Definition quat.c:301
MtxPtr MTXPushInv(MTXStack *sPtr, const Mtx m)
Definition mtxstack.c:48
void PSQUATSubtract(const Quaternion *p, const Quaternion *q, Quaternion *r)
f32 Mtx[3][4]
Definition mtx.h:22
void C_MTXTranspose(const Mtx src, Mtx xPose)
Definition mtx.c:280
void C_MTXLightFrustum(Mtx m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 scaleS, f32 scaleT, f32 transS, f32 transT)
Definition mtx.c:1129
void C_QUATLerp(const Quaternion *p, const Quaternion *q, Quaternion *r, f32 t)
Definition quat.c:410
MtxPtr MTXPop(MTXStack *sPtr)
Definition mtxstack.c:87
void C_VECSubtract(const Vec *a, const Vec *b, Vec *a_b)
Definition vec.c:25
void PSMTXMultVecSR(const Mtx m, const Vec *src, Vec *dst)
void C_MTX44RotTrig(Mtx44 m, char axis, f32 sinA, f32 cosA)
Definition mtx44.c:633
Definition mtx.h:39
u32 numMtx
Definition mtx.h:40
MtxPtr stackBase
Definition mtx.h:41
MtxPtr stackPtr
Definition mtx.h:42
Definition d_a_hozelda.cpp:16
f32 w
Definition mtx.h:19
Definition mtx.h:14
s16 x
Definition mtx.h:15
Definition d_a_hozelda.cpp:18
f32 x
Definition mtx.h:11
unsigned long u32
Definition types.h:9
signed short int s16
Definition types.h:6
float f32
Definition types.h:22