mirror of
https://github.com/emu-russia/pureikyubu.git
synced 2025-04-02 10:42:15 -04:00
133 lines
6 KiB
C
133 lines
6 KiB
C
#pragma once
|
|
|
|
void MTXOpen();
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
General stuff
|
|
--------------------------------------------------------------------------- */
|
|
|
|
/*/
|
|
void MTXIdentity ( Mtx m );
|
|
void MTXCopy ( Mtx src, Mtx dst );
|
|
void MTXConcat ( Mtx a, Mtx b, Mtx ab );
|
|
void MTXTranspose ( Mtx src, Mtx xPose );
|
|
u32 MTXInverse ( Mtx src, Mtx inv );
|
|
u32 MTXInvXpose ( Mtx src, Mtx invX );
|
|
/*/
|
|
|
|
// C version
|
|
void C_MTXIdentity (void);
|
|
void C_MTXCopy (void);
|
|
void C_MTXConcat (void);
|
|
void C_MTXTranspose (void);
|
|
void C_MTXInverse (void);
|
|
void C_MTXInvXpose (void);
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
Matrix-vector
|
|
--------------------------------------------------------------------------- */
|
|
|
|
/*/
|
|
void MTXMultVec ( Mtx m, VecPtr src, VecPtr dst );
|
|
void MTXMultVecArray ( Mtx m, VecPtr srcBase, VecPtr dstBase, u32 count );
|
|
void MTXMultVecSR ( Mtx m, VecPtr src, VecPtr dst );
|
|
void MTXMultVecArraySR ( Mtx m, VecPtr srcBase, VecPtr dstBase, u32 count );
|
|
/*/
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
Affine matrix math
|
|
--------------------------------------------------------------------------- */
|
|
|
|
/*/
|
|
void MTXQuat ( Mtx m, QuaternionPtr q );
|
|
void MTXReflect ( Mtx m, VecPtr p, VecPtr n );
|
|
void MTXTrans ( Mtx m, f32 xT, f32 yT, f32 zT );
|
|
void MTXTransApply ( Mtx src, Mtx dst, f32 xT, f32 yT, f32 zT );
|
|
void MTXScale ( Mtx m, f32 xS, f32 yS, f32 zS );
|
|
void MTXScaleApply ( Mtx src, Mtx dst, f32 xS, f32 yS, f32 zS );
|
|
void MTXRotRad ( Mtx m, char axis, f32 rad );
|
|
void MTXRotTrig ( Mtx m, char axis, f32 sinA, f32 cosA );
|
|
void MTXRotAxisRad ( Mtx m, VecPtr axis, f32 rad );
|
|
/*/
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
Look at utility
|
|
--------------------------------------------------------------------------- */
|
|
|
|
/*/
|
|
void MTXLookAt ( Mtx m,
|
|
Point3dPtr camPos,
|
|
VecPtr camUp,
|
|
Point3dPtr target );
|
|
/*/
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
Project matrix stuff
|
|
--------------------------------------------------------------------------- */
|
|
|
|
/*/
|
|
void MTXFrustum ( Mtx44 m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 f );
|
|
void MTXPerspective ( Mtx44 m, f32 fovY, f32 aspect, f32 n, f32 f );
|
|
void MTXOrtho ( Mtx44 m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 f );
|
|
/*/
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
Texture projection
|
|
--------------------------------------------------------------------------- */
|
|
|
|
/*/
|
|
void MTXLightFrustum ( Mtx m, f32 t, f32 b, f32 l, f32 r, f32 n,
|
|
f32 scaleS, f32 scaleT, f32 transS,
|
|
f32 transT );
|
|
|
|
void MTXLightPerspective ( Mtx m, f32 fovY, f32 aspect, f32 scaleS,
|
|
f32 scaleT, f32 transS, f32 transT );
|
|
|
|
void MTXLightOrtho ( Mtx m, f32 t, f32 b, f32 l, f32 r, f32 scaleS,
|
|
f32 scaleT, f32 transS, f32 transT );
|
|
/*/
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
Vector operations
|
|
--------------------------------------------------------------------------- */
|
|
|
|
/*/
|
|
void VECAdd ( VecPtr a, VecPtr b, VecPtr ab );
|
|
void VECSubtract ( VecPtr a, VecPtr b, VecPtr a_b );
|
|
void VECScale ( VecPtr src, VecPtr dst, f32 scale );
|
|
void VECNormalize ( VecPtr src, VecPtr unit );
|
|
f32 VECSquareMag ( VecPtr v );
|
|
f32 VECMag ( VecPtr v );
|
|
f32 VECDotProduct ( VecPtr a, VecPtr b );
|
|
void VECCrossProduct ( VecPtr a, VecPtr b, VecPtr axb );
|
|
f32 VECSquareDistance ( VecPtr a, VecPtr b );
|
|
f32 VECDistance ( VecPtr a, VecPtr b );
|
|
void VECReflect ( VecPtr src, VecPtr normal, VecPtr dst );
|
|
void VECHalfAngle ( VecPtr a, VecPtr b, VecPtr half );
|
|
/*/
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
Quaternions
|
|
--------------------------------------------------------------------------- */
|
|
|
|
/*/
|
|
void QUATAdd ( QuaternionPtr p, QuaternionPtr q, QuaternionPtr r );
|
|
void QUATSubtract ( QuaternionPtr p, QuaternionPtr q, QuaternionPtr r );
|
|
void QUATMultiply ( QuaternionPtr p, QuaternionPtr q, QuaternionPtr pq );
|
|
void QUATDivide ( QuaternionPtr p, QuaternionPtr q, QuaternionPtr r );
|
|
void QUATScale ( QuaternionPtr q, QuaternionPtr r, f32 scale );
|
|
f32 QUATDotProduct ( QuaternionPtr p, QuaternionPtr q );
|
|
void QUATNormalize ( QuaternionPtr src, QuaternionPtr unit );
|
|
void QUATInverse ( QuaternionPtr src, QuaternionPtr inv );
|
|
void QUATExp ( QuaternionPtr q, QuaternionPtr r );
|
|
void QUATLogN ( QuaternionPtr q, QuaternionPtr r );
|
|
void QUATMakeClosest ( QuaternionPtr q, QuaternionPtr qto, QuaternionPtr r );
|
|
void QUATRotAxisRad ( QuaternionPtr r, VecPtr axis, f32 rad );
|
|
void QUATMtx ( QuaternionPtr r, Mtx m );
|
|
void QUATLerp ( QuaternionPtr p, QuaternionPtr q, QuaternionPtr r, f32 t );
|
|
void QUATSlerp ( QuaternionPtr p, QuaternionPtr q, QuaternionPtr r, f32 t );
|
|
void QUATSquad ( QuaternionPtr p, QuaternionPtr a, QuaternionPtr b,
|
|
QuaternionPtr q, QuaternionPtr r, f32 t );
|
|
void QUATCompA ( QuaternionPtr qprev, QuaternionPtr q,
|
|
QuaternionPtr qnext, QuaternionPtr a );
|
|
/*/
|