2

我想知道如何在 Libgdx 中旋转纹理区域。

如果 Pixmap 有问题,也可以给我。

我不想使用精灵,因为它不适合我想做的事情。

谢谢。

4

2 回答 2

4

将纹理区域旋转 90° 的倍数实际上非常简单。

纹理区域是更大纹理的一部分,由两对 UV 坐标定义。为了旋转你的纹理区域,你只需要旋转这些 UV 坐标。

例如,这是您的原始纹理区域:原地区

(我们假设您的区域是正方形,但它也适用于矩形)要顺时针旋转 90,您只需要交换坐标:

u1 = u1
v1 = v2
u2 = u2
v2 = v1

这将导致:

旋转区域

您可以使用变换矩阵(旋转、平移、缩放)来概括此解决方案,但对于 90° 多次旋转,您只需要交换坐标。

编辑:此页面包含更改纹理区域的 UV 坐标所需的所有信息

于 2013-06-11T09:25:18.410 回答
0

旋转一个角度,在原点说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); 最后一个参数是旋转角度

于 2015-03-08T15:04:57.617 回答