sgdk: maths3D.h File Reference

sgdk

- Main Page
- Related Pages
- Classes
- Files

- File List
- File Members

Classes | Typedefs | Functions
maths3D.h File Reference

3D math engine. More...

Go to the source code of this file.

## Classes

struct | Context3D
| Structure hosting settings / context for the 3D transform engine. More...
struct | Transformation3D

3D transformation object - f16 (fix16) type.
This object define the global 3D transformation informations and associated cached data.
If rotation information is modified the rebuildMat flag should be set to 1.
Rotation and translation objects are reference so don't forget to set them. More...

## Typedefs

typedef V3f16 | Translation3D
| 3D translation informations object - f16 (fix16) type.
typedef V3f16 | Rotation3D
| 3D rotation informations object - f16 (fix16) type.

## Functions

void | M3D_reset ()
| Reset math 3D engine (reset matrices and transformation parameters mainly).
void | M3D_setLightEnabled (u16 enabled)
| Enable or disable light transformation calculation.
u16 | M3D_getLightEnabled ()
| Get light transformation calculation enabled flag.
void | M3D_setViewport (u16 w, u16 h)
| Set viewport dimension.
void | M3D_setCamDistance (fix16 value)
| Set camera scene distance.
void | M3D_setLightXYZ (fix16 x, fix16 y, fix16 z)
| Set light direction vector.
void | M3D_setLight (V3f16 *value)
| Set light direction vector.
void | M3D_resetTransform (Transformation3D *t)
| Reset the specified Transformation3D object.
void | M3D_setTransform (Transformation3D *tr, Translation3D *t, Rotation3D *r)
| Set translation and rotation objects to the specified transformation object.
void | M3D_setTranslation (Transformation3D *t, fix16 x, fix16 y, fix16 z)
| Set translation parameters to the specified transformation object.
void | M3D_setRotation (Transformation3D *t, fix16 x, fix16 y, fix16 z)
| Set rotation parameters to the specified Transformation3D object. Be careful, x, y, z angle values are not given in radiant: [-8..+8] range correspond to radian [-PI..+PI] range.
void | M3D_combineTransform (Transformation3D *left, Transformation3D *right, Transformation3D *result)
| Combine the specified right and left Transformation3D objects and store result in `result`. result cannot be the same transformation object as left or right.
void | M3D_combineTranslationLeft (Translation3D *left, Transformation3D *right, Transformation3D *result)
| Combine the specified left Translation3D and right Transformation3D and store result in `result`. right and result transformation object can be the same.
void | M3D_combineTranslationRight (Transformation3D *left, Translation3D *right, Transformation3D *result)
| Combine the specified left Transformation3D with right Translation3D and store result in `result`. left and result transformation object can be the same.
void | M3D_buildMat3D (Transformation3D *t)
| Build the transformation matrix of the specified Transformation3D object. This also rebuild cached informations as inverse transformation matrix, inverse camera view...
void | M3D_buildMat3DOnly (Transformation3D *t)
| Build the transformation matrix of the specified transformation object. Only rebuild the transformation matrix (faster), cached infos as inverse matrix are not rebuild.
void | M3D_buildMat3DExtras (Transformation3D *t)
| Only rebuild the cached infos as inverse matrix, inverse camera view...
void | M3D_translate (Transformation3D *t, V3f16 *vertices, u16 numv)
| Process 3D translation only to specified 3D vertices buffer.
void | M3D_rotate (Transformation3D *t, const V3f16 *src, V3f16 *dest, u16 numv)
| Process 3D rotation only to specified 3D vertices buffer.
void | M3D_rotateInv (Transformation3D *t, const V3f16 *src, V3f16 *dest)
| Process 3D inverse rotation only to specified 3D vertex.
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_project_s16 (const V3f16 *src, V2s16 *dest, u16 numv)
| Process 2D projection to specified 3D vertices buffer (s16 version).

## Detailed Description

3D math engine.

Author:
  Stephane Dallongeville

Date:
  08/2011

This unit provides 3D transformation methods :

- translation X, Y, Z
- rotation X, Y, Z
- one directionnal light
- 2D projection
  Can transform (including 2D projection) about ~10000 vertices / seconde.

## Function Documentation

void M3D_buildMat3D | ( | Transformation3D * | t | ) |

Build the transformation matrix of the specified Transformation3D object.
This also rebuild cached informations as inverse transformation matrix, inverse camera view...

Parameters:

  t | Transformation3D object.

void M3D_buildMat3DExtras | ( | Transformation3D * | t | ) |

Only rebuild the cached infos as inverse matrix, inverse camera view...

Parameters:

  t | Transformation object.

void M3D_buildMat3DOnly | ( | Transformation3D * | t | ) |

Build the transformation matrix of the specified transformation object. Only rebuild the transformation matrix (faster), cached infos as inverse matrix are not rebuild.

Parameters:

  t | Transformation object.

void M3D_combineTransform | ( | Transformation3D * | left,
|  | Transformation3D * | right,
|  | Transformation3D * | result
| ) |  |

Combine the specified right and left Transformation3D objects and store result in `result`. result cannot be the same transformation object as left or right.

Parameters:

  left | Left Transformation3D object.
  right | Right Transformation3D object.
  result | Result Transformation3D object.

void M3D_combineTranslationLeft | ( | Translation3D * | left,
|  | Transformation3D * | right,
|  | Transformation3D * | result
| ) |  |

Combine the specified left Translation3D and right Transformation3D and store result in `result`.
right and result transformation object can be the same.

Parameters:

  left | Left Transformation3D object.
  right | Right Transformation3D object.
  result | Result Transformation3D object.

void M3D_combineTranslationRight | ( | Transformation3D * | left,
|  | Translation3D * | right,
|  | Transformation3D * | result
| ) |  |

Combine the specified left Transformation3D with right Translation3D and store result in `result`.
left and result transformation object can be the same.

Parameters:

  left | Left Transformation3D object.
  right | Right Translation3D object.
  result | Result Transformation3D object.

void M3D_project_f16 | ( | const V3f16 * | src,
|  | V2f16 * | dest,
|  | u16 | numv
| ) |  |

Process 2D projection to specified 3D vertices buffer (fix16 version).

Parameters:

  src | Source 3D vertices buffer.
  dest | Destination 2D vertices buffer - fix16 format
  numv | Number of vertices to project.

void M3D_project_s16 | ( | const V3f16 * | src,
|  | V2s16 * | dest,
|  | u16 | numv
| ) |  |

Process 2D projection to specified 3D vertices buffer (s16 version).

Parameters:

  src | Source 3D vertices buffer.
  dest | Destination 2D vertices buffer - s16 format
  numv | Number of vertices to project.

void M3D_rotate | ( | Transformation3D * | t,
|  | const V3f16 * | src,
|  | V3f16 * | dest,
|  | u16 | numv
| ) |  |

Process 3D rotation only to specified 3D vertices buffer.

Parameters:

  t | Transformation object containing rotation parameter.
  src | Source 3D vertices buffer.
  dest | Destination 3D vertices buffer.
  numv | Number of vertices to rotate.

void M3D_rotateInv | ( | Transformation3D * | t,
|  | const V3f16 * | src,
|  | V3f16 * | dest
| ) |  |

Process 3D inverse rotation only to specified 3D vertex.

Parameters:

  t | Transformation object containing rotation parameter.
  src | Source 3D vertex.
  dest | Destination 3D vertex.

void M3D_setCamDistance | ( | fix16 | value | ) |

Set camera scene distance.

Parameters:

  value | Distance between the camera and the scene.

void M3D_setViewport | ( | u16 | w,
|  | u16 | h
| ) |  |

Set viewport dimension.

Parameters:

  w | Viewport width (use BMP_WIDTH if you use 3D with software bitmap engine)
  h | Viewport height (use BMP_HEIGHT if you use 3D with software bitmap engine)

void M3D_transform | ( | Transformation3D * | t,
|  | const V3f16 * | src,
|  | V3f16 * | dest,
|  | u16 | numv
| ) |  |

Process 3D transform (rotation and translation) to specified 3D vertices buffer.

Parameters:

  t | Transformation object containing rotation and translation parameters.
  src | Source 3D vertices buffer.
  dest | Destination 3D vertices buffer.
  numv | Number of vertices to transform.

void M3D_translate | ( | Transformation3D * | t,
|  | V3f16 * | vertices,
|  | u16 | numv
| ) |  |

Process 3D translation only to specified 3D vertices buffer.

Parameters:

  t | Transformation object containing translation parameter.
  vertices | 3D vertices buffer to translate.
  numv | Number of vertices to translate.

All Classes Files Functions Variables Typedefs Enumerations Enumerator Defines