Esistono due sistemi di coordinate. Conosciamo le coordinate 3D dell'origine e i vettori 3D degli assi del secondo sistema di coordinate rispetto al primo sistema di coordinate. Allora come possiamo trovare la matrice di rotazione che trasforma il primo sistema di coordinate nel secondo sistema di coordinate?Come trovare la matrice di rotazione tra due sistemi di coordinate?
risposta
Il problema descritto può essere risolto come segue. Let
M = m_11 m_12 m_13
m_21 m_22 m_23
m_31 m_32 m_33
denotare la matrice di rotazione desiderata. Richiediamo
1 0 0 * M + t = x_x x_y x_z
0 1 0 y_x y_y y_z
0 0 1 z_x z_y z_y
dove t
indica la traduzione; vediamo che questa uguaglianza di matrice può essere risolta moltiplicando da sinistra la matrice di identità, che è l'inverso di se stessa; quindi otteniamo la seguente uguaglianza.
M + t = x_x x_y x_z
y_x y_y y_z
z_x z_y z_y
Questo può essere riorganizzate sottraendo t
da entrambi i lati per ottenere la matrice desiderata M
come segue.
M = x_x x_y x_z - t = x_x-t_x x_y-t_y x_z-t_z
y_x y_y y_z y_x-t_x y_y-t_y y_z-t_z
z_x z_y z_y z_x-t_x z_y-t_y z_z-t_z
noti che questo era relativamente facile come matrice iniziale consiste di vettori di base della base standard. In generale è più difficile e coinvolge uno basis transformation, che può essere fatto fondamentalmente da Gaussian elimination, ma può essere numericamente difficile.
Penso che il cambio di base possa essere d'aiuto Wiki Link. È abbastanza facile da implementare.
Ho scritto un articolo su di esso che dimostra come farlo, con il codice sorgente. La risposta breve è che si costruisce una matrice 3x3 con i prodotti dot dell'asse diverso
http://www.meshola.com/Articles/converting-between-coordinate-systems
noti che per matrice di rotazione si dovrebbe sottrarre vettore di traslazione da tutte le colonne di M, in modo 'R = x_x - x x_y - x x_z - x ... 'e così via – MBo
Non ho familiarità con la notazione utilizzata; non significa una traduzione implicata? Ha senso, tuttavia la domanda originale richiede solo una rotazione. – Codor
Penso di sì, l'autore [R | t] implica rotazione + traduzione (nota origine non zero). La matrice M è corretta per caso di rotazione pura, per R + t è necessario utilizzare le coordinate relative – MBo