[matlab] roto traslazione con fattore di scala
Salve,
vorrei far calcolare a matlab una rototraslazione con fattore di scala.
la formula è la seguente: $ ( ( x ),( y ),( z ) )=(1+lambda)*( ( 1 , Rz , -Ry ),( -Ry , 1 , Rx ),( Ry , -Rx , 1 ) )*( ( x0 ),( y0 ),( z0 ) )+( ( Tx ),( Ty ),( Tz ) ) $
Chi mi sa dire come scriverla su matlab rispettando le precedenze?
vorrei far calcolare a matlab una rototraslazione con fattore di scala.
la formula è la seguente: $ ( ( x ),( y ),( z ) )=(1+lambda)*( ( 1 , Rz , -Ry ),( -Ry , 1 , Rx ),( Ry , -Rx , 1 ) )*( ( x0 ),( y0 ),( z0 ) )+( ( Tx ),( Ty ),( Tz ) ) $
Chi mi sa dire come scriverla su matlab rispettando le precedenze?
Risposte
Che cosa non riesci esattamente a fare? Sono delle semplici moltiplicazioni tra matrici.. Qualcosa come
dovrebbe funzionare..
X = (1 - lambda)*R*X0 + T
dovrebbe funzionare..
scusami ma eseguendo il calcolo con la calcolatrice otterrei per la prima componete questa formula:
(1-lamda)*(x0*1+y0*Rz+z0*(-Ry))+Tx
con la formula soprascritta non ottengo lo stesso risultato e non capisco perché.
forse ci sono problemi di precedenza di moltiplicazioni però non so come risolverli
(1-lamda)*(x0*1+y0*Rz+z0*(-Ry))+Tx
con la formula soprascritta non ottengo lo stesso risultato e non capisco perché.
forse ci sono problemi di precedenza di moltiplicazioni però non so come risolverli
Credo che tu non abbia compreso il mio codice.. X0 non è il tuo x0, forse avrei dovuto essere più chiaro... X è uguale a [x, y, z] nella tua notazione..
Ovviamente nessuno però scriverebbe un codice di questo tipo in quanto è molto più conveniente lavorare con i vettori per tutto..
R = [1, Rz, -Ry; -Ry, 1, Rx; Ry, -Rx, 1];' T = [Tx; Ty; Tz]; V0 = [x0; y0; z0]; V = (1 - lambda)*R*V + T; x = V(1); y = V(2); z = V(3);
Ovviamente nessuno però scriverebbe un codice di questo tipo in quanto è molto più conveniente lavorare con i vettori per tutto..