2 ответов:
На самом деле довольно просто повернуть текстурную область с кратными 90°.
Текстурный регион - это часть более крупной текстуры, определяемая двумя парами УФ-координат. Чтобы повернуть свой текстурный регион, вам просто нужно повернуть эти УФ-координаты.Например, вот вам оригинальный текстуррегион:
(мы предполагаем, что ваша область является квадратом, но она будет работать и с прямоугольником) Чтобы повернуть 90 по часовой стрелке, вам нужно просто поменять местами координаты:
u1 = u1 v1 = v2 u2 = u2 v2 = v1Что приведет к:
Вы можете обобщить это решение с помощью матрицы преобразований (поворот, перевод, масштабирование), но для многократного поворота на 90° вам просто нужно поменять координаты.
EDIT: Эта страница содержит все, что вам нужно знать, чтобы изменить УФ-координаты текстурного региона
Для поворота под углом скажем тета (символ @) в начале координат
Пусть (x, y) - старые значения и
(xn, yn) - новые значения, то
По часовой стрелке
Xn=x * cos (@)+ y * sin (@)
Yn=y * sin (@)-x * cos (@)
Против часовой стрелки
Xn=x * cos (@)+ y * sin (@)
Yn=y * sin (@)-x * cos (@)
Для вдоль точки обратитесь к этой диаграмме помогает Как повернуть вершину вокруг определенной точки?
Например прямоугольник просто вычислить 2 положение вершин(x1,y1) и (x2, y2)
Затем нарисуйте следующим образом ширина=x2-x1; высота=y2-y1;
G. drawRectangle (x, y, width, heigh);
Прошло некоторое время с тех пор, как я пересмотрел свои заметки C. G., Но я думаю, что выше будет делать трюк
Если использовать libgdx здесь простое решение: Spritebatch.ничья(регион, 0, 0, 128, 128, 256, 256, 1, 1, 90); последний параметр-угол поворота


Comments