Java 从鼠标图像旋转计算X和Y速度

Java 从鼠标图像旋转计算X和Y速度,java,rotation,mouse,Java,Rotation,Mouse,所以我有一个Java2D游戏,当我必须将大炮旋转到鼠标的方向并保存角度时。这是可行的,但我有真正的问题。我不能从这个方程式中得到的答案计算出正确的X和Y速度: double angle = Math.atan2(centerY - c.mouseY, centerX - c.mouseX) - Math.PI / 2; int x = (int) Math.acos(c.rotation*Math.PI/180); int y = (int) Math.sin(c.rotation*Math.

所以我有一个Java2D游戏,当我必须将大炮旋转到鼠标的方向并保存角度时。这是可行的,但我有真正的问题。我不能从这个方程式中得到的答案计算出正确的X和Y速度:

double angle = Math.atan2(centerY - c.mouseY, centerX - c.mouseX) - Math.PI / 2;
int x = (int) Math.acos(c.rotation*Math.PI/180);
int y = (int) Math.sin(c.rotation*Math.PI/180);
然后我用这个等式:

double angle = Math.atan2(centerY - c.mouseY, centerX - c.mouseX) - Math.PI / 2;
int x = (int) Math.acos(c.rotation*Math.PI/180);
int y = (int) Math.sin(c.rotation*Math.PI/180);

我没有得到y的正确速度。你们能帮帮我吗?

可能是因为你们在计算y值时使用了余弦。这不是正弦波吗?

不,还是不起作用。我有一个参考指南,它使用一个整数进行旋转,但问题是我没有得到一个整数进行旋转,我得到了一个双精度。不管x速度如何,我得到了,但是y速度仍然不起作用。在c旋转下存储了什么?您希望如何计算速度?也许你不需要计算任何角度,你所需要的只是规范化向量(然后选择缩放它),就像这样:double x=mouseX/sqrt(mouseX^2+mouseY^2),double y=mouseY/sqrt(mouseX^2+mouseY^2)。这有点可行,但它并没有朝着它应该去的方向前进。c、 旋转保存角度变量的值。如果只有方向是一个问题,则可能需要在规格化之前反转和/或偏移值。试着用你想计算角度的方法来做:double posX=centerX-c.mouseX,double posY=centerY-c.mouseY。然后用posX替换mouseX,用posY替换mouseY。