Vb Lover
Messages postés221Date d'inscriptionvendredi 30 novembre 2001StatutMembreDernière intervention13 février 20105 28 oct. 2005 à 17:19
pour faire ça, le plus facile c'est d'utiliser le produit vectoriel, vu
que le produit vectoriel de 2 vecteurs donnent un vecteur
perpendiculaire. dans ton cas, il n'y a qu'un vecteur, donc il faut
tout d'abord en rajouter un arbitrairement, (la seule condition, c'est
qu'il ne soit pas colinéaire à ton premier vecteur), par exemple le
vecteur A = (0,0,1)
' vérifie que ton vecteur N n'est pas dirigé selon l'axe z
' choisit le vecteur A
if (u1<>0 or u2<>0) then
a1 0: a2 0: a3 = 1
else
a1 1: a2 1: a3 = 0
end if
' ton vecteur M est le prod. vect. entre M et A
v1 = u2 * a3 - u3 * a2
v2 = u3 * a1 - u1 * a3
v3 = u1 * a2 - u2 * a1
puis le 3e vecteur, perpendiculaire à M et N et donner par le prod. vect de M et N.
si tu as compris le principe, voilà le code qui résume tout ça:
if (u1<>0 or u2<>0) then
v1 u2: v2 -u1: v3 = 0
else
v1 -u3: v2 u3: v3 = u1-u2
end if
un autre moyen, ce serait de ramener par des matrices de rotation ton
vecteur sur l'axe x (1,0,0), et d'avoir ensuite directement deux autres
vecteurs perpendiculaires donnés par l'inverse de tes matrices de
rotation appliqué aux vecteurs (0,1,0) et (0,0,1)