sgdk
Loading...
Searching...
No Matches
maths3D.h
Go to the documentation of this file.
1
16#ifndef _MATHS3D_H_
17#define _MATHS3D_H_
18
19
24typedef struct
25{
26 V2u16 viewport;
27 fix16 camDist;
28 V3f16 light;
29 u16 lightEnabled;
30} Context3D;
31
37
43
51typedef struct
52{
53 u16 rebuildMat;
54 Translation3D* translation;
55 Rotation3D* rotation;
56 M3f16 mat;
57 M3f16 matInv;
58 V3f16 cameraInv;
59 V3f16 lightInv;
61
66void M3D_reset(void);
67
72void M3D_setLightEnabled(u16 enabled);
78
88void M3D_setViewport(u16 w, u16 h);
96void M3D_setCamDistance(fix16 value);
101void M3D_setLightXYZ(fix16 x, fix16 y, fix16 z);
106void M3D_setLight(V3f16* value);
107
113
119
132
172
199
211void M3D_translate(Transformation3D* t, V3f16* vertices, u16 numv);
225void M3D_rotate(Transformation3D* t, const V3f16* src, V3f16* dest, u16 numv);
237void M3D_rotateInv(Transformation3D* t, const V3f16* src, V3f16* dest);
251void M3D_transform(Transformation3D* t, const V3f16* src, V3f16* dest, u16 numv);
252
264void M3D_project_f16(const V3f16* src, V2f16* dest, u16 numv);
276void M3D_project_s16(const V3f16* src, V2s16* dest, u16 numv);
277
278
279#endif // _MATHS3D_H_
void M3D_buildMat3D(Transformation3D *t)
Build the transformation matrix of the specified Transformation3D object. This also rebuild cached i...
Definition maths3D.c:252
void M3D_combineTranslationLeft(Translation3D *left, Transformation3D *right, Transformation3D *result)
Combine the specified left Translation3D and right Transformation3D and store result in result....
Definition maths3D.c:188
V3f16 Rotation3D
3D rotation informations object - f16 (fix16) type.
Definition maths3D.h:42
void M3D_setLight(V3f16 *value)
Set light direction vector.
Definition maths3D.c:57
V3f16 Translation3D
3D translation informations object - f16 (fix16) type.
Definition maths3D.h:36
void M3D_setTranslation(Transformation3D *t, fix16 x, fix16 y, fix16 z)
Set translation parameters to the specified transformation object.
Definition maths3D.c:124
void M3D_resetTransform(Transformation3D *t)
Reset the specified Transformation3D object.
Definition maths3D.c:65
void M3D_buildMat3DExtras(Transformation3D *t)
Only rebuild the cached infos as inverse matrix, inverse camera view...
Definition maths3D.c:295
void M3D_setViewport(u16 w, u16 h)
Set viewport dimension.
Definition maths3D.c:39
void M3D_project_s16(const V3f16 *src, V2s16 *dest, u16 numv)
Process 2D projection to specified 3D vertices buffer (s16 version).
void M3D_translate(Transformation3D *t, V3f16 *vertices, u16 numv)
Process 3D translation only to specified 3D vertices buffer.
Definition maths3D.c:320
void M3D_setTransform(Transformation3D *tr, Translation3D *t, Rotation3D *r)
Set translation and rotation objects to the specified transformation object.
Definition maths3D.c:113
void M3D_rotateInv(Transformation3D *t, const V3f16 *src, V3f16 *dest)
Process 3D inverse rotation only to specified 3D vertex.
Definition maths3D.c:365
void M3D_setLightXYZ(fix16 x, fix16 y, fix16 z)
Set light direction vector.
Definition maths3D.c:50
u16 M3D_getLightEnabled(void)
Get light transformation calculation enabled flag.
Definition maths3D.c:33
void M3D_setLightEnabled(u16 enabled)
Enable or disable light transformation calculation.
Definition maths3D.c:28
void M3D_rotate(Transformation3D *t, const V3f16 *src, V3f16 *dest, u16 numv)
Process 3D rotation only to specified 3D vertices buffer.
Definition maths3D.c:341
void M3D_transform(Transformation3D *t, const V3f16 *src, V3f16 *dest, u16 numv)
Process 3D transform (rotation and translation) to specified 3D vertices buffer.
void M3D_project_f16(const V3f16 *src, V2f16 *dest, u16 numv)
Process 2D projection to specified 3D vertices buffer (fix16 version).
void M3D_setCamDistance(fix16 value)
Set camera scene distance.
Definition maths3D.c:45
void M3D_buildMat3DOnly(Transformation3D *t)
Build the transformation matrix of the specified transformation object. Only rebuild the transformati...
Definition maths3D.c:258
void M3D_setRotation(Transformation3D *t, fix16 x, fix16 y, fix16 z)
Set rotation parameters to the specified Transformation3D object. Be careful, x, y,...
Definition maths3D.c:133
void M3D_combineTransform(Transformation3D *left, Transformation3D *right, Transformation3D *result)
Combine the specified right and left Transformation3D objects and store result in result....
Definition maths3D.c:147
void M3D_combineTranslationRight(Transformation3D *left, Translation3D *right, Transformation3D *result)
Combine the specified left Transformation3D with right Translation3D and store result in result....
Definition maths3D.c:219
void M3D_reset(void)
Reset math 3D engine (reset matrices and transformation parameters mainly).
Definition maths3D.c:13
Structure hosting settings / context for the 3D transform engine.
Definition maths3D.h:25
3x3 Matrice structure - f16 (fix16) type. Internally uses 3 3D vectors.
Definition maths.h:282
3D transformation object - f16 (fix16) type. This object define the global 3D transformation informa...
Definition maths3D.h:52
2D Vector structure - f16 (fix16) type.
Definition maths.h:170
2D Vector structure - s16 type.
Definition maths.h:140
2D Vector structure - u16 type.
Definition maths.h:130
3D Vector structure - f16 (fix16) type.
Definition maths.h:259
unsigned short u16
Definition types.h:100
s16 fix16
Definition types.h:181