我拥有一个精灵,知道它的位置和背后的矩形。
我想要获取精灵后面的位置,已知偏移量。
我的意思是:
Point p=new Point(sprite.getX()-offset,sprite.getY()-sprite.getHeight()/2);
如果我将精灵绕其中心原点旋转,我想要得到该点的新位置。
下面是一张图,可以更好地说明问题:
![enter image description here](https://istack.dev59.com/uPia4.webp)
您需要提供旋转中心的坐标(即保持不变的点)。
X' = (X - Xc) * cos(A) - (Y - Yc) * sin(A) + Xc
Y' = (Y - Yc) * cos(A) + (X - Xc) * sin(A) + Yc
如果您能告诉我们哪些部分出了问题,那就更好了,因为您并没有提供任何线索...
在Libgdx中查看Sprite的源代码,可以看到getVertices()方法,其中有一些本地计算,这可能会有所帮助。
这个链接非常有用。
http://www.philvaz.com/games/rotate.htm
xnew = x * cos(angle) - y * sin(angle)
ynew = y * cos(angle) + x * sin(angle)
查阅AffineTransform
类的文档,以及Wolfram MathWorld或维基百科上的任何来源(例如http://mathworld.wolfram.com/RotationFormula.html)。在Java中,您的精灵可能会在一个旋转的框架中呈现,使用AffineTransform
类,所以如果您仔细应用变换,甚至可能不需要自己进行额外的数学计算来获得尾点的位置。
http://libgdx.badlogicgames.com/nightlies/docs/api/ 在这个API中,Sprite类有一个获取旋转角度的方法,请查看该文档是否有用。