2009-05-06 8 views
3

Avant que tout le monde ne me saute dessus pour l'externalisation de mes devoirs, ma question n'est pas une question sur mes devoirs. J'ai juste un problème pour obtenir des trucs pour dessiner correctement. J'essaie de tracer des lignes perpendiculaires à un plan. Je connais les trois points de l'espace qui composent l'avion. A partir de ces coordonnées, je peux calculer des vecteurs et obtenir le vecteur normal de l'avion. En utilisant les coordonnées du centre des trois points et le vecteur normal, je peux tracer une ligne perpendiculaire au plan. Mon problème est que la longueur de cette ligne est liée au vecteur normal parce que j'ajoute juste le vecteur aux coordonnées pour obtenir deux points pour dessiner une ligne. Sans utiliser de code de force brute hideux, comment puis-je dessiner une ligne de longueur fixe donnée à n'importe quel point dans l'espace 3D et n'importe quel vecteur.Tracer une ligne de longueur X donnée par un point dans l'espace et un vecteur

(Je demande ici parce que je ne connais pas les termes à utiliser pour faire une recherche sur google, mon manuel n'a rien à voir avec ça, et mon professeur ne sera pas disponible avant que cela n'arrive.)

Répondre

7

Vous devez « normaliser » votre vecteur normal ..

de le faire, il faut diviser le vecteur par son ampleur.

la longueur, ou l'amplitude, du vecteur r est donnée par:

 
    
             
   
   
l = √ x2 + y2 + z2 

on divise ensuite r par sa longueur (à savoir en divisant celle-ci chaque composant) donnant

 
n = { x/l, y/l, z/l } 

cela vous donnera un nouveau vecteur normal de longueur 1.

vous pouvez ensuite multiplier cela par la longueur que vous désirez .. pour obtenir n'importe quelle ligne de taille, vous avez besoin

+0

Donc le vecteur normal est (x/n, y/n, z/n) avec 'n' étant l'amplitude du vecteur? (Récupérée d'un site Web aléatoire sur la normalisation des vecteurs) – epochwolf

+0

Oui ... ce qui signifie que la longueur/amplitude de votre vecteur devient 1 .. (Parce que x/x == 1 (pour non-zéro x) – ShoeLace

+0

Merci! Cela aide beaucoup. – epochwolf

Questions connexes