rotation multidimensionnelle de vecteur et de calcul d'angle - comment?
-
25-09-2019 - |
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.
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.
Autres conseils
Vous trouverez ce document utile: Rotations pour Graphics N dimensions par AJ Hanson . Il y a aussi cet article: Rotations générales n dimensions . Vous pouvez également consulter cette où un tas de gens essayer de travailler dehors. Et voici encore un autre document: sur le concept rigide de rotation dans les espaces n-dimensionnelle . Doit. Arrêtez. Recherche sur Google.