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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top