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