Si Xz != 0 :
(1) <=> z = - x * Xx / Xz - y * Xy / Xz
donc on remplace z pas ça dans (2) :
x * Yx + y * Yy - x * Xx / Xz - y * Xy / Xz = 0 <=>
x * (Xz * Yx - Xx) / Xz = y * (Xy - Yy * Xz) / Xz <=>
x = y * (Xy - Yy * Xz) / (Xz * Yx - Xx) = y * A
On remplace x par ça dans (1) modifié on obtient :
z = y * A - y * Xy / Xz = y * (A * Xz - Xy) / Xz = y * B
et on doit avoir sqrt(x * x + y * y + z * z) = 1 <=>
sqrt(y*y*A*A + y*y + y * y * B * B) = 1 <=>
abs(y) * sqrt(A*A + 1 + B * B) = 1 <=>
abs(y) = 1 / sqrt(A* A + 1 + B * B)
Donc on prend Z tel que :
y = 1 / sqrt(A* A + 1 + B * B)
x = y * A
z = y * B
Fin si
Si Xz == 0 :
(1) <=> x * Xx + y * Xy = 0 <=> x = - y * Xy / Xx = - y * C
Si Yz != 0 :
On remplace x par ça dans (2) :
- y * C * Yx + y * Yy + z * Yz = 0 <=>
z = y * (C * Yx - Yy) / Yz = y * D
or norm(Z) = 1 <=> abs(y) = 1 / sqrt(C*C + 1 + D * D)
Donc on prend Z tel que :
y = 1 / sqrt(C*C + 1 + D*D)
x = - y * C
z = y * D
Sinon si Yz == 0 :
On a (2) <=> x * Yx + y * Yy = 0 et x = - y * C
<=> - y * C * Yx + y * Yy = 0 <=> y * E = 0 => y = 0 ou y appartient aux réels
Pour gérer ça on peut se dire qu'il n'y a aucune contrainte sur z donc z appartient aussi aux réels mais on doit avoir norm(Z) = 1 donc si on prend y = 0 on doit avoir z = 1 Donc dans tous les cas on a :
Z = (0, 0, 1)
Fin si
Partager