找到要旋转的度数?

时间:2011-08-02 01:12:26

标签: java math rotation angle degrees

我正在尝试找到一个旋转对象以使其面向指定点的方法,但是我得到的数字没有多大意义,我不认为我理解数学方法返回的是什么。

这是我的代码:

public void rotate(double x, double y) {
    rotateRight(Math.toDegrees(Math.atan2((x - getX()), (y - getY()))));
}

x和y是指定的点,getX()和getY()是对象的当前点,所以我试图找到对象必须向右转以面向指定点的度数。

有人可以推荐一种可靠的方法吗?

4 个答案:

答案 0 :(得分:1)

您需要matrix transformation才能正确完成。

答案 1 :(得分:1)

你的命名有点令人困惑,所以我在这里做了一些假设。您的“对象”位于原点(0,0),getX()和getY()返回对象当前所面对的点,并且您希望对象面向新点。

从这里开始,它是简单的触发和算术。首先要弄清楚你当前的角度:

current_angle=atan(getX()/getY())

你的新角度将是

new_angle=atan(newX/newY)

,你需要旋转的角度很自然,

rotation_angle=new_angle - current_angle

答案 2 :(得分:1)

这取决于您使用的单位。就个人而言,在弧度上,我在我的片段中有这个功能。

public static double getAngleBetween(double x1, double y1, double x2, double y2)
{
      return(Math.atan2(y1-y2, x1-x2));
}

这导致任意两个抽象点之间的角度(以弧度表示)。

答案 3 :(得分:0)

Math.atan2()返回的角度是绝对的。为了将其转换为相对旋转,您首先需要知道当前角度是什么,然后您需要减去两者。