我想知道如何在 Libgdx 中旋转纹理区域。
如果 Pixmap 有问题,也可以给我。
我不想使用精灵,因为它不适合我想做的事情。
谢谢。
将纹理区域旋转 90° 的倍数实际上非常简单。
纹理区域是更大纹理的一部分,由两对 UV 坐标定义。为了旋转你的纹理区域,你只需要旋转这些 UV 坐标。
例如,这是您的原始纹理区域:
(我们假设您的区域是正方形,但它也适用于矩形)要顺时针旋转 90,您只需要交换坐标:
u1 = u1
v1 = v2
u2 = u2
v2 = v1
这将导致:
您可以使用变换矩阵(旋转、平移、缩放)来概括此解决方案,但对于 90° 多次旋转,您只需要交换坐标。
编辑:此页面包含更改纹理区域的 UV 坐标所需的所有信息
旋转一个角度,在原点说theta(符号@)
令 (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)
然后绘制如下 width=x2-x1; 高度=y2-y1;
g.drawRectangle(x,y,width,heigh);
自从我修改了我的 CG 笔记以来已经有一段时间了,但我想上面会解决问题
如果在这里使用 libgdx 是简单的解决方案: Spritebatch.draw(region, 0, 0, 128, 128, 256, 256, 1, 1, 90); 最后一个参数是旋转角度