Как повернуть спрайт не от нижнего левого угла?

98
02 января 2021, 03:50

Переписал на си функцию glm::rotate, теперь хочу сделать так, чтобы можно было повернуть изображение относительно другой координаты, а не координаты левого нижнего угла рисунка. Так можно вообще? Я думал что надо что нибудь с cos и sin угол умножить на координаты, но изображение только уменшается и увеличивается.

Answer 1

Поворот в 2D относительно заданной точки CX, CY можно описать, как отметил Герман Борисов, с помощью последовательности переноса (чтобы центр вращения сместился в начало координат), поворота координат, и обратного переноса. В компактном виде формулы будут такие:

X_New = CX + (X - CX) * Cos(Fi) - (Y - CY) * Sin(Fi)
Y_New = CY + (X - CX) * Sin(Fi) + (Y - CY) * Cos(Fi)
READ ALSO
Qt/C++ Как “перевернуть” строку по вертикали?

Qt/C++ Как “перевернуть” строку по вертикали?

Делаю график на QtНужно подписать координатную ось ОY

97
Как создать новость в категории DLE?

Как создать новость в категории DLE?

Как создать новость в категории DLE? я создал категорию Партнеры, но не могу туда добавить новость, добавил код в about-navtpl

101
Эффект-прозрачности

Эффект-прозрачности

Не могу никак отстилизовать последнего кота

99