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^=vv

Scalaire

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

kv=(kx, ky, kz)

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 (RXRYRYRX), 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×ba×b

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+td^(t0)

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=(pmin, pmax)avecpmin=(xmin,ymin,zmin)

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

xminpxxmaxyminpyymaxzminpzzmax

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[uW, vH]

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 :

ab=axbx+ayby+azbz=abcosθ
  • Si ab=0 : les vecteurs sont perpendiculaires
  • Si ab>0 : ils pointent dans le même sens
  • Si ab<0 : ils pointent en sens opposé

Cross product

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

a×b=(aybzazbyazbxaxbzaxbyaybx)

Sa magnitude vaut absinθ. Utilisé notamment pour calculer les normales de surfaces.

Matricielle

Multiplication matricielle

Appliquer une transformation B puis A à un vecteur v :

v=ABv

L'ordre compte : ABBA en général.

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

(x1x2xn)=(m11m12m1nm21m22m2nmn1mn2mnn)(x1x2xn)

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

xi=mi1x1+mi2x2++minxn=j=1nmijxj

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

(xyz1)=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=TRS

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=xztan(α/2)yécran=yzatan(α/2)

Physique

Forces

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

F=ma

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

Ftotal=F1+F2++Fn

Position, vitesse, accélération

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

a(t)=dvdtv(t)=dpdta(t)=d2pdt2v(t)=a dtp(t)=v dt

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

vn+1=vn+anΔtpn+1=pn+vn+1Δt

Gravité et animation

Sous l'effet de la gravité seule (g9.8 m/s2), la hauteur à l'instant t est :

py(t)=py0+vy0t12gt2

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

vyn+1=vyngΔtpyn+1=pyn+vyn+1Δt