Ну, ваш объект представлен некоторыми начальными координатами (x, y) ^ t.Чтобы повернуть это в 2D-пространстве, вы должны использовать матрицу вращения
R = [ cos(a) -sin(a)]
[ sin(a) cos(a) ]
Поскольку вы также хотите выполнить перевод T (перемещение по синусоиде), вы можете создать аффинное преобразование, расширяяваши 2D координаты в 3D однородные координаты.Предположим, что ваш перевод будет (tx, ty) и ваш угол поворота (в радианах) равен a, матрица преобразования будет
T = [ cos(a) -sin(a) tx
sin(a) cos(a) ty
0 0 1 ]
Когда вы преобразуете свою исходную (x, y) точку в (x, у, 1) простое
T * (x,y,1)^t
сделает свое дело.
Вы можете вернуться от однородных к декартовым координатам, разделив все элементы на последний (т.е. вы потеряете одно измерение).Так как в этом простом случае они всегда равны 1, вы можете просто отбросить последнюю координату и вернуться в 2D.
Редактировать: множители T и (x, y, 1) ^ t дают:
T*(x,y,1)^t = [ cos(a) -sin(a) tx ] [ x ]
[ sin(a) cos(a) ty ]*[ y ] =
[ 0 0 1 ] [ 1 ]
= [ cos(a)*x - sin(a)*y + tx ]
[ sin(a)*x + cos(a)*y + ty ] =
[ 1 ]
= (cos(a)*x - sin(a)*y + tx, sin(a)*x + cos(a)*y + ty, 1)^t