[matlab] roto traslazione con fattore di scala

walzio
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?

Risposte
apatriarca
Che cosa non riesci esattamente a fare? Sono delle semplici moltiplicazioni tra matrici.. Qualcosa come
X = (1 - lambda)*R*X0 + T

dovrebbe funzionare..

walzio
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

apatriarca
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..
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..

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.