我正在尝试找到一个旋转对象以使其面向指定点的方法,但是我得到的数字没有多大意义,我不认为我理解数学方法返回的是什么。
这是我的代码:
public void rotate(double x, double y) {
rotateRight(Math.toDegrees(Math.atan2((x - getX()), (y - getY()))));
}
x和y是指定的点,getX()和getY()是对象的当前点,所以我试图找到对象必须向右转以面向指定点的度数。
有人可以推荐一种可靠的方法吗?
答案 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()
返回的角度是绝对的。为了将其转换为相对旋转,您首先需要知道当前角度是什么,然后您需要减去两者。