2010-09-05 8 views
1

J'ai trois connus en 3 dimensions points: A, B, et C. Additionnellement, j'ai un quatrième point, X.Comment puis-je trouver le vecteur unité entre un point et une ligne?

X se trouve sur le vecteur de telle sorte que AB vecteur CX est perpendiculaire au vecteur AB. Donc AB · CX = 0

Comment trouver le vecteur unitaire de CX?


Le cas d'utilisation est que je suis la construction d'un (traduit) matrice de rotation, dont l'origine est A, l'axe z passe par B, le plan xz passe thtough C, et les axes sont orthogonal

J'ai aussi un objet vectoriel qui fournit des fonctions de points et produits croisés à ma disposition.

+0

Je ne pense pas que ce soit un bon choix pour Stack Overflow, c'est plus sur les mathématiques qu'autre chose. – stakx

+1

C'est trop élémentaire pour le débordement mathématique. D'ailleurs, c'est à peine avancé. Pourquoi ne pas essayer? – duffymo

+0

J'ai essayé d'essayer, mais je n'obtiens rien encore ... – Eric

Répondre

2

Let

U = (B-A)/||(B-A)|| 

être un vecteur unitaire le long de la ligne de A à B, où ||X|| désigne la longueur du vecteur X. Maintenant, nous pouvons paramétrer toute la ligne par

A + tU 

et nous voulons

((A + tU) - C)*U = 0 

afin que

A*U - C*U + t = 0 
t = C*U - A*U 

donc nous avons trouvé une solution pour t, et maintenant nous laisser

V = (A+tU - C)/||A+tU - C|| 

et nous avons r un vecteur unitaire le long de la ligne, U, et un orthogonal à celui-ci, V.

+0

Est-ce que 'A * U' désigne le produit scalaire ou croisé? – Eric

+0

Donc 'V = (A + (C · U - A · U) * U - C)/|| (A + (C · U - A · U) * U - C) ||'? – Eric

+0

@Eric - '*' est le produit scalaire, et oui, vous l'avez agrandi correctement. –