Skip to content

Glossaire ​

Vecteur ​

Un vecteur représente une direction et une magnitude dans l'espace. En 3D :

v→=(x, y, z)

La magnitude (longueur) du vecteur :

∥v→∥=x2+y2+z2

Un vecteur normalisé a une magnitude de 1 :

v^=v→∥v→∥

Scalaire ​

Un scalaire est une valeur numérique simple, sans direction. Il peut multiplier un vecteur pour changer sa magnitude :

k⋅v→=(k⋅x, k⋅y, k⋅z)

Matrice ​

Une matrice 4×4 est utilisée en 3D pour représenter des transformations (translation, rotation, échelle). En Three.js, Matrix4 est omniprésente :

M=(m00m01m02m03m10m11m12m13m20m21m22m23m30m31m32m33)

Angles d'Euler ​

Les angles d'Euler décomposent une rotation 3D en trois rotations successives autour des axes X, Y, Z (respectivement pitch, yaw, roll) :

R=RZ(ψ)⋅RY(θ)⋅RX(ϕ)

avec ϕ∈[−180°,180°], θ∈[−90°,90°], ψ∈[−180°,180°].

C'est la représentation la plus intuitive, mais l'ordre des rotations compte (RX⋅RY≠RY⋅RX), et elle souffre du gimbal lock : lorsque θ=±90°, les axes X et Z s'alignent et on perd un degré de liberté.

Quaternion ​

Un quaternion représente une rotation dans l'espace 3D sans souffrir du blocage de cardan (gimbal lock). Il est composé d'une partie scalaire et d'un vecteur :

q=(w, x, y, z)avecw2+x2+y2+z2=1

Une rotation d'angle θ autour d'un axe unitaire u^=(ux,uy,uz) s'encode :

q=(cos⁡θ2, uxsin⁡θ2, uysin⁡θ2, uzsin⁡θ2)

Normale ​

Un vecteur normal est un vecteur perpendiculaire à une surface en un point donné. Il est unitaire par convention :

n^=a→×b→∥a→×b→∥

où a→ et b→ sont deux arêtes du triangle. Les normales sont indispensables pour le calcul de l'éclairage et les réponses aux collisions.

Rayon ​

Un rayon est une demi-droite définie par une origine o→ et une direction d^ (unitaire). Tout point du rayon s'écrit :

r→(t)=o→+t⋅d^(t≥0)

Utilisé pour le raycasting : détecter ce que vise le curseur, les tirs, la ligne de vue.

AABB ​

Une Axis-Aligned Bounding Box est une boîte de collision dont les faces sont parallèles aux axes du repère. Elle se définit par deux points :

AABB=(p→min, p→max)avecp→min=(xmin,ymin,zmin)

Un point p→ est à l'intérieur si :

xmin≤px≤xmax∧ymin≤py≤ymax∧zmin≤pz≤zmax

UV ​

Les coordonnées UV sont des coordonnées 2D (u,v)∈[0,1]2 qui associent chaque sommet d'un maillage à un point d'une texture :

couleur(u,v)=texture[u⋅W, v⋅H]

où W et H sont les dimensions en pixels de la texture. u correspond à l'axe horizontal, v à l'axe vertical.

Opérations ​

Vectorielle ​

Dot product ​

Le produit scalaire (dot product) de deux vecteurs donne un scalaire. Il mesure à quel point deux vecteurs sont alignés :

a→⋅b→=axbx+ayby+azbz=∥a→∥∥b→∥cos⁡θ
  • Si a→⋅b→=0 : les vecteurs sont perpendiculaires
  • Si a→⋅b→>0 : ils pointent dans le même sens
  • Si a→⋅b→<0 : ils pointent en sens opposé

Cross product ​

Le produit vectoriel (cross product) de deux vecteurs donne un vecteur perpendiculaire aux deux :

a→×b→=(aybz−azbyazbx−axbzaxby−aybx)

Sa magnitude vaut ∥a→∥∥b→∥sin⁡θ. Utilisé notamment pour calculer les normales de surfaces.

Matricielle ​

Multiplication matricielle ​

Appliquer une transformation B puis A à un vecteur v→ :

v→′=A⋅B⋅v→

L'ordre compte : A⋅B≠B⋅A en général.

Pour transformer un point, on multiplie la matrice par le vecteur colonne. En dimension n :

(x1′x2′⋮xn′)=(m11m12⋯m1nm21m22⋯m2n⋮⋱⋮mn1mn2⋯mnn)⋅(x1x2⋮xn)

Chaque composante du résultat est la somme des produits de la ligne i de M avec le vecteur :

xi′=mi1⋅x1+mi2⋅x2+⋯+min⋅xn=∑j=1nmij⋅xj

En 3D homogène (n=4, avec x4=1) :

(x′y′z′1)=M⋅(xyz1)x′=m11x+m12y+m13z+m14y′=m21x+m22y+m23z+m24z′=m31x+m32y+m33z+m34

Transformation ​

Déplacer, tourner ou redimensionner un objet revient à lui appliquer une matrice. On distingue trois transformations fondamentales :

Translation d'un vecteur t→=(tx,ty,tz) :

T=(100tx010ty001tz0001)

Mise à l'échelle par facteurs (sx,sy,sz) :

S=(sx0000sy0000sz00001)

Rotation d'angle θ autour de l'axe Z :

Rz=(cos⁡θ−sin⁡θ00sin⁡θcos⁡θ0000100001)

La transformation complète d'un objet (modèle → monde) combine ces matrices :

Mmodel=T⋅R⋅S

Caméra ​

Projection perspective ​

La projection perspective transforme les coordonnées 3D en coordonnées 2D écran en simulant la perception humaine : les objets lointains paraissent plus petits. Elle est définie par :

  • FOV (Field of View) : angle d'ouverture vertical α
  • Aspect ratio : rapport largeur/hauteur de l'écran a=W/H
  • Near/Far : distances minimale n et maximale f du volume visible

Un point 3D (x,y,z) est projeté en :

xécran=xz⋅tan⁡(α/2)yécran=yz⋅a⋅tan⁡(α/2)

Physique ​

Forces ​

La force appliquée à un objet de masse m produit une accélération a→ :

F→=m⋅a→

Plusieurs forces peuvent s'additionner (gravité, vent, collisions…) :

F→total=F→1+F→2+⋯+F→n

Position, vitesse, accélération ​

Ces trois grandeurs sont liées par la dérivation / intégration par rapport au temps t :

a→(t)=dv→dtv→(t)=dp→dta→(t)=d2p→dt2v→(t)=∫a→ dtp→(t)=∫v→ dt

En simulation temps réel, on approxime avec un pas de temps Δt (méthode d'Euler) :

v→n+1=v→n+a→n⋅Δtp→n+1=p→n+v→n+1⋅Δt

Gravité et animation ​

Sous l'effet de la gravité seule (g≈9.8 m/s2), la hauteur à l'instant t est :

py(t)=py0+vy0⋅t−12g⋅t2

En animation image par image, on met à jour la hauteur à chaque pas Δt :

vyn+1=vyn−g⋅Δtpyn+1=pyn+vyn+1⋅Δt