diff options
author | pk33 <pk33@pk33.space> | 2024-11-14 15:06:07 +0100 |
---|---|---|
committer | pk33 <pk33@pk33.space> | 2024-11-14 15:06:07 +0100 |
commit | ed2a4bc4400c38ecd11baccac5db328b797b5d68 (patch) | |
tree | b703749d0639f933edca4c3a78209159aa735c25 /include/math33.h | |
parent | 5a54774474f43ae29716751d6415563a59b92c7d (diff) | |
download | engine33-ed2a4bc4400c38ecd11baccac5db328b797b5d68.tar.gz |
Diffstat (limited to 'include/math33.h')
-rw-r--r-- | include/math33.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/include/math33.h b/include/math33.h new file mode 100644 index 0000000..503421b --- /dev/null +++ b/include/math33.h @@ -0,0 +1,56 @@ +#ifndef __MATH33_H__ +#define __MATH33_H__ + + +#include "types33.h" + + +typedef f64 Vec2[2]; +typedef f64 Vec3[3]; +typedef f64 Vec4[4]; +typedef f64 Mat4[16]; + + +#define V4PRINT( x, y, v ) {\ + QPRINTF( x, y, "[%.2lf, %.2lf, %.2lf, %.2lf]", v[0], v[1], v[2], v[3] );\ +} +#define V3PRINT( x, y, v ) {\ + QPRINTF( x, y, "[%.2lf, %.2lf, %.2lf]", v[0], v[1], v[2] );\ +} +#define V2PRINT( x, y, v ) {\ + QPRINTF( x, y, "[%.2lf, %.2lf]", v[0], v[1] );\ +} + +#define M2PRINT( x, y, m ) {\ + QPRINTF( x, y, "[%.2lf, %.2lf]", m[0], m[1] );\ + QPRINTF( x, y+defFont.h, "[%.2lf, %.2lf]", m[4], m[5] );\ +} +#define M3PRINT( x, y, m ) {\ + const Size Y = defFont.h;\ + QPRINTF( x, y, "[%.2lf, %.2lf, %.2lf]", m[0], m[1], m[2] );\ + QPRINTF( x, y+Y, "[%.2lf, %.2lf, %.2lf]", m[4], m[5], m[6] );\ + QPRINTF( x, y+Y+Y, "[%.2lf, %.2lf, %.2lf]", m[8], m[9], m[10] );\ +} +#define M4PRINT( x, y, m ) {\ + const Size Y = defFont.h;\ + QPRINTF( x, y, "[%.2lf, %.2lf, %.2lf, %.2lf]", m[0], m[1], m[2], m[3] );\ + QPRINTF( x, y+Y, "[%.2lf, %.2lf, %.2lf, %.2lf]", m[4], m[5], m[6], m[7] );\ + QPRINTF( x, y+Y+Y, "[%.2lf, %.2lf, %.2lf, %.2lf]", m[8], m[9], m[10], m[11] );\ + QPRINTF( x, y+Y+Y+Y, "[%.2lf, %.2lf, %.2lf, %.2lf]", m[12], m[13], m[14], m[15] );\ +} + + +void M4I( Mat4 m ); +void V4xMt( Vec4 dst, Vec4 v, Mat4 m ); +void MxM4( Mat4 a, Mat4 b ); +void VxP( Mat4 v, Mat4 p ); + +void math33_create_translation_matrix( f64 x, f64 y, f64 z, Mat4 m ); +void math33_create_view_rotation_matrix( f64 x, f64 y, Mat4 m ); +void math33_create_view_matrix( Vec3 t, Vec3 r, Mat4 m ); +void math33_create_rotation_matrix( f64 x, f64 y, f64 z, Mat4 m ); +void math33_create_scale_matrix( f64 x, f64 y, f64 z, Mat4 m ); +void math33_create_world_matrix( Vec3 t, Vec3 r, Vec3 s, Mat4 m ); + + +#endif /** MATH33_H **/ |