rotazione vettore multidimensionale e l'angolo calcolo - come?
-
25-09-2019 - |
Domanda
Input:. Due multidimensionale (ad esempio dim = 8) vettori a e b
Ho bisogno di scoprire l'angolo "diretto" (0-2 * Pi, non 0-Pi) tra i vettori a e b. E se non sono parallele devo ruotare vettore b nel piano a, b da "diretto" angolo L. Se sono parallele, aereo non importa, ma l'angolo di rotazione è ancora lo stesso L.
Per 2D e 3D questo è abbastanza facile, ma per più dimensioni sono perso, non ho trovato nulla su google, e io preferisco usare alcune equazioni già dimostrato & testato (evitando errori introdotti dai miei calcoli :-D).
Vi ringrazio in anticipo per suggerimenti, link, ecc.
Soluzione
Credo che si dovrebbe lavorare sul piano generato dai tuoi vettori a e b. Il codice sarà quindi la stessa indipendentemente dalla dimensione (a proposito, la dimensione dei vettori è per definizione la dimensione dello spazio).
È possibile farlo da orthogonalizing (a, b) come:
a' = a/||a||
b1 = b - (a'·b)a' <-- scalar product denoted by ·
b' = b1/||b||
Ora siete su un aereo con una base ortonormale e dovrebbe essere di nuovo in affari. Le coordinate di B in quella base è (un '· b, b' · b). Per una è simile (|| A ||, 0). Quando si desidera tornare alla spazio ambiente, è sufficiente scrivere il vostro vettore di coordinate (x1, x2) come x1 un '+ x2 b'.
spero che la notazione matematica non è troppo confusa.
Altri suggerimenti
Si possono trovare utile questo documento: Rotazioni per la Grafica N-dimensionali da AJ Hanson . C'è anche questo documento: generali Rotazioni n-dimensionali . È inoltre possibile controllare questo forum filo dove un gruppo di persone cercano di lavorare fuori. Ed ecco ancora un altro documento: sul concetto rotazione rigida in spazi n-dimensionale . Dovere. Fermare. Googling.