旋转矩形后得到一个点

时间:2014-01-02 18:05:51

标签: java math

我有一个精灵,我知道位置和背后的矩形。 我想获得精灵背后的位置,我知道偏移。

我的意思是

Point p=new Point(sprite.getX()-offset,sprite.getY()-sprite.getHeight()/2);

如果我将精灵旋转到其中心原点,我想获得该点的新位置。

可以更好地解释的图像:

enter image description here

4 个答案:

答案 0 :(得分:3)

您需要提供旋转中心的坐标(保持固定的点)。

X' = (X - Xc) * cos(A) - (Y - Yc) * sin(A) + Xc
Y' = (Y - Yc) * cos(A) + (X - Xc) * sin(A) + Yc

告诉我们什么不起作用也很好,因为你没有提供线索......

答案 1 :(得分:1)

getVertices()上查看Libgdx上Sprite的来源,有计算但在本地,这可能会有所帮助。

这样非常有用

http://www.philvaz.com/games/rotate.htm

xnew = x * cos(angle) - y * sin(angle)
ynew = y * cos(angle) + x * sin(angle)

答案 2 :(得分:0)

查看AffineTransform类的文档以及Wolfram MathWorld或Wikipedia上的任意数量的来源(例如http://mathworld.wolfram.com/RotationFormula.html)。在Java中,您的精灵可能会使用AffineTransform类在旋转的帧中渲染,因此如果您仔细应用变换,您甚至可能不需要自己做任何额外的数学来获得尾随点的位置。

答案 3 :(得分:0)

在这个api中

http://libgdx.badlogicgames.com/nightlies/docs/api/,sprite类有一个获取旋转的方法,看看该文档是否有用