Question

Entrée:. Deux multidimensionnel (par exemple dim = 8) des vecteurs a et b

Je dois trouver l'angle "dirigé" (0-2 * Pi, pas 0-Pi) entre les vecteurs a et b. Et si elles ne sont pas parallèles, je dois tourner vecteur b dans le plan a, b par « dirigé » angle L. Si elles sont parallèles, plan n'a pas d'importance, mais l'angle de rotation est toujours le même L.

Pour 2d et 3d cela est assez facile, mais pour plus de dimensions que je suis perdu, je ne trouve rien sur google, et je préfère utiliser des équations déjà prouvé et testé (en évitant les erreurs introduites par mes calculs :-D).

Nous vous remercions à l'avance pour obtenir des conseils, des liens, etc.

Était-ce utile?

La solution

Je crois que vous devriez travailler sur le plan généré par vos vecteurs a et b. Le code sera alors la même quelle que soit la dimension (BTW, la dimension des vecteurs est par définition la dimension de l'espace).

Vous pouvez le faire par orthogonalisation (a, b) comme:

a' = a/||a||
b1 = b - (a'·b)a'  <-- scalar product denoted by ·
b' = b1/||b||

Vous êtes maintenant sur un plan avec une base orthonormée et devrait être de retour dans les affaires. Les coordonnées de b en ce que la base est (a '· b, b' · b). Pour un, il est tout aussi (|| un ||, 0). Lorsque vous voulez revenir à l'espace ambiant, écrivez simplement votre vecteur de coordonnées (x1, x2) comme x1 a « + x2 b ».

J'espère que la notation mathématique n'est pas trop confus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top