LE TORE

Le tore est défini dans son propre repère à l'aide de ses deux rayons r et R.

Calcul de l'intersection

L'équation du rayon est :
x(t)= d0 t+p0
y(t)= d1 t+p1
z(t)= d2 t+p2
avec (d0,d1,d2)la direction du rayon et (p0 ,p1 ,p2 ) le point origine du rayon.

L'équation du tore est (x² + y² + z² + R² - r²)² - 4 R² (x² + z²) = 0.
On résout donc ((d0 t+p0)² + (d1 t+p1)² + (d2 t+p2)² + R² - r²)² = 4R²( (d0 t+p0)²+ (d2 t+p2)²).
Ce qui nous donne une équation du quatrième ordre a t4 + b t3 + c t² + d t + e = 0, avec
a = (d0² + d1² + d2²)²
b = 4 (d0² + d1² + d2²)(d0 p0 + d1 p1 + d2 p2)
c = 2 (d0² + d1² + d2²)(p0² + p1² + p2² + R² - r²) + (d0 p0 + d1 p1 + d2 p2)² - 4 R² (d0² + d2²)
d = 4 (d0 p0 + d1 p1 + d2 p2) (p0² + p1² + p2² + R² - r²) - 8 R² (d0 p0 + d2 p2)
e = (p0² + p1² + p2² + R² - r²)² - 4 R² (p0² + p2²)
On résout cette équation avec la méthode utilisée dans la classe polynomiale (méthode de Vieta).
S'il existe des racines réelles, on choisit la racine t0 minimum supérieure strictement à epsilon.
Si celle-ci existe, on calcule le point d'intersection entre le tore et le rayon avec t= t0 dans l'équation paramétrique du rayon.
Dans le cas ou toutes les racines sont inférieures à epsilon, t a pour valeur MAXDOUBLE et donc le rayon ne rencontre pas le tore.

Comme pour les autres objets, la distance est évaluée lorsqu'il existe un point d'intersection. Sinon, elle vaut MAXDOUBLE.

Calcul de la normale

Ici pour le calcul de la normale nous allons utiliser le gradient de l'équation implicite f(x, y, z) = 0 définissant la surface du tore.
f(x,y,z) = (x² + y² + z² + R² - r²)² - 4 R² (x² + z²)

df/dx = 4 x (x² + y² + z² + R² - r²) - 8 R² x
df/dy = 4 y (x² + y² + z² + R² - r²)
df/dz = 4 z (x² + y² + z² + R² - r²) - 8 R² z

Ainsi au point (x, y, z) la normale a pour coordonnée (df/dx, df/dy, df/dz).


Auteurs : Thomas Bonfort, Delphine Chaigneau, Olivier Galizzi, Laure Heigeas