Trigonométrie

Pi

const float pi = 3.14159265f; // avec une infinité de nombre après

Cosinus & Sinus

(Provient de http://commons.wikimedia.org/wiki/User:Geek3 , sous la licence GNU Free Documentation)

Cercle unitaire

( Modifié depuis http://en.wikipedia.org/wiki/User:Gustavb, licence: Creative Commons 3.0 )t est un angle en radian.

0 radians = 0 degrés

180 degrés = Pi radians

360 degrés (cercle complêt) = 2*Pi radians

90 degrés = Pi/2 radians

Vecteurs

Fais TOUJOURS attention au repère dans lesquels tes vecteurs sont. Regarde la section 3 pour plus de détails.

Coordonées homogène

Un vecteur 3D est représenté par : (x, y, z), mais un vecteur 3D en coordonnées homogènes est représenté par : (x, y, z, w) :

  • w=0 : Le vecteur représente une direction
  • w=1 : Le vecteur représente une position
  • w=qqch d’autre : C’est peut être encore correct, mais t’as plutôt intérêt de savoir ce que tu fais.

On ne peut multiplier une matrice 4*4 qu’avec un vecteur homogène.

Longueur

Comme pour une distance cartésienne : racine carrée(x² + y² + z²). w n’est pas pris en compte.

Produit en croix

( Modifié depuis http://en.wikipedia.org/wiki/User:Acdx , image sous la license: Creative Commons 3.0 )Le X est la notation du produit en croix. longueur( a x b ) == longueur(a) * longueur(b) * sin(θ), donc tu voudras peut être normaliser le résultat

Produit scalaire (Dot product en anglais)

##

( Depuis http://en.wikipedia.org/wiki/File:Dot_Product.svg )A.B = longueur(A)cos(θ) , mais on peut le calculer comme ça: A.xB.x +A.yB.y +A.zB.z

Addition et soustraction

Pour chaque composante (x, y, …) :


res.x = A.x + B.x
res.y = A.y + B.y
...

Multiplication

Pour chaque composante (x, y, …) :


res.x = A.x * B.x
res.y = A.y * B.y
...

Normalisation

On divise le vecteur par sa longueur


normalizedVector = vec * ( 1.0f / vec.length() )

Matrices

Multiplication Matrice à Matrices

Exemple pour une matrice de translation :

Multiplication matrice à vecteur

Transformations habituelles

… mais dans tes shaders, tu peux aussi représenter tes vecteurs dans le repère tangent. Et aussi dans le repère image quand tu fais des effets après rendu.

res.x = A.x + B.x