Modul 3dMath

    Veškeré 3D operace, operace s maticemi a složitá matematika týkající se 3D prostoru je koncentrována zde. Modul je postaven bez použití tříd kvůli efektivnosti, na kterou se v tomto modulu zvláště hledí.


typedef GLfloat GLMatrix[4][4]; - definice pro matici
typedef GLfloat GLVector3[3];
- definice pro vektor

inline void MatrixCopy(GLMatrix *MD, GLMatrix *MS) { assert(MS!=MD);  memcpy(MD,MS,sizeof(GLMatrix)); }; - funkce pro kopírování matice
void MatrixLoadIdentity(GLMatrix *M); - načtení jednotkové matice
void MatrixMoveForward(GLMatrix *M, GLfloat S);
- pohyb objektu, jehož poloha je dána touto maticí, dopředu o S
void MatrixMoveBackward(GLMatrix *M, GLfloat S);
- pohyb objektu zpět
void MatrixTranspose(GLMatrix *MD, GLMatrix *MS);
- transponuje matici MS a výsledek uloží do MD
void MatrixMove(GLMatrix (*M), float Forward, float LR, float DU);
- pohyb objektu, jehož poloha je dána maticí M, o Forward směrem dopředu, o LR směrem do boku (kladná hodnota doprava), o DU směrem vertikálním (kladná hodnota nahoru, záporná dolů)
void MatrixRotate(GLMatrix *M, const GLfloat RotLR, const GLfloat RotUD, const GLfloat Rol);
- rotuje objekt popsaný maticí M horizontálně o RotLR, vertikálně o RotUD a kolem vlastní osy o Rol; hodnoty jsou v radiánech