Posté par
CanardWC CanardWCBonsoir à tous!
Dans le cadre d'un développement informatique, j'ai besoin de trouver l'intersection de 3 plans dans l'espace, 3 plans quelconques.
J'ai donc fouillé sur internet, et j'ai trouvé une méthode (enfin, des pistes de méthodes car cela ne correspondait pas toujours) avec les matrices. j'aimerai savoir si mon raisonnement est bon.
On considère bien sûr que les calculs sont justes (l'ordinateur n'arrondit rien).
On dispose de 3 plans, N, M et P, défini chacun par 3 points distincts.
On en déduit aisément un vecteur normal. J'ai utilisé le produit vectoriel.
On appellera n, de coordonnées (a b c), le vecteur normal à N.
n' est le vecteur normal à M, de coordonnées a' b' c'
n" est le vecteur normal à P, de coordonnées a" b" c"
Je pose une matrice nommée

:
(a b c )
(a' b' c')
(a" b" c")
Je peux affirmer que les plans N, M et P ont pour équations cartésiennes respectives:
ax + by + cz + e = 0
a'x + b'y + c'z + e' = 0
a"x + b"y + c"z + e" = 0
Avec:
e = -n . OA
e' = -n' . OA'
e" = -n" . OA"
<=>
e = -(a. Ax+b. Ay+c. Az)
e' = -(a.A'x+b.A'y+c.A'z)
e" = -(a.A"x+b.A"y+c.A"z)
En posant d, d' et d" comme suit:
d = -e = a. Ax+b. Ay+c. Az
d' = -e' = a.A'x+b.A'y+c.A'z
d" = -e" = a.A"x+b.A"y+c.A"z
Mes plans ont donc comme autre équation:
ax + by + cz (+ e - e ) = -e
a'x + b'y + c'z (+ e' - e') = -e'
a"x + b"y + c"z (+ e" - e") = -e"
<=>
ax + by + cz = d
a'x + b'y + c'z = d'
a"x + b"y + c"z = d"
Je pose maintenant la matrice

:
( d )
( d' )
( d" )
Soit E l'ensemble des points de l'intersection des trois plans
Tous les points de E vérifient donc les équations des 3 plans
Soit M(x, y, z) un des points de E
Je pose une nouvelle matrice, nommée L:
(x)
(y)
(z)
Quelque soit M(x, y, z) € E:
ax + by + cz = d
a'x + b'y + c'z = d'
a"x + b"y + c"z = d"
Sous forme de matrices (ben tiens, je ne les ai pas posées pour rien! ^^):
(a b c ) (x) (d )
(a' b' c') . (y) = (d')
(a" b" c") (z) (d")
C'est à dire, quelque soit M(x, y, z) € E
alpha * I = Beta
Je cherche alors le déterminant de alpha
L'intersection des trois plans n'est pas un point si et seulement si det(

) = 0 (E est un ensemble vide ou une infinité de points si et seulement si det(

) = 0)
(Si le déterminant de

est nul, le programme se clot, et indique que l'intersection n'est pas un point. Si le déterminant est non-nul, le programme se poursuit.)
Il existe, à ce stade, un unique point M(x, y, z) qui appartient aux trois plans
Je prends la matrice inverse de alpha, qui existe vu que le déterminant de alpha est nul.
Soit

-1 la matrice inverse de

. Je résous mon équation matricielle (ça se dit?):
. I = 
<=>
-1 *
* I =
-1 * 
<=>
I =
-1 *
Je n'ai plus qu'a calculer I, car je connait les deux autres matrices.
Maintenant, connaissant I, j'en déduis les coordonnées de M:
(x)
I = (y)
(z)
<=>
M(x, y, z)
Ainsi, j'obtiens les coordonnées du point d'intersection de 3 plans quelconques, sans soucis de cas particulier.
Existe-t-il une erreur dans ce raisonnement?
Pour m'assurer fermement du bon fonctionnement de mon code, pourriez-vous me donner des équations de 3 plans, avec le point d'intersection calculé préalablement? Je n'ai aps trouvé d'exercices corrigés d'équations de 3 plans sur le net (sans corrigé, c'est inutile: je veux m'assurer que le programme trouve le même résultat qu'un humain ayant fait le calcul manuellement).
Merci d'avance de votre aide!