, ( , ). , : X, Y, Y, X.
( ) :
let angle = (end - start)/500
Rx = rotate.RotateX(angle)
Ry = rotate.RotateY(angle)
then, foreach frame in (0..500):
cumulative: Rc = Rx * Ry * Rx * Ry * ... * Rx * Ry
= (Rx * Ry)^frame
assignment: Ra = Rx * Rx * ... * Ry * Ry * ....
= (Rx)^frame * (Ry)^frame
: , ( , ). , , , (matrix)^N : N (matrix) .
OQ , Rx Ry ; rotation (Rx*Ry). worldMatrix ; , worldMatrix= initial_worldMatrix * (Rx*Ry)^frame.
frame * total_angle/total_frames. total_angle/total_frames frame , , , , . , (Rx)^frame * (Ry)^frame worldMatrix .
, ; , -.
, , . X Y; .
, , 500 ( , - ). , 45 Z, /500 X, -45 Z, .
:
X, Y, . , ( , , - ). , , , , .
X, Y. , . , : X Y , Y -.
, : , . , ( , Rx * Ry Ry * Rx - 4 ), - , , . (Rx * Ry → Ry * Rx) , N Rx - , , : O (N ^ 2) ....