找到与枢轴相关的角度

时间:2010-11-19 12:51:48

标签: java math trigonometry

我正在开展一个项目,我必须在其中使用凸包,以及格雷厄姆扫描的具体方法。问题已经解决,直到我想要对点进行排序。 所以故事是我收集了一些点,它们来自Point类型,它们的坐标是亲戚。意味着它们来自鼠标事件x和y。所以我已经将鼠标位置收集为点的x和y。我想找到与枢轴点相关的角度。有没有人有一段代码来计算这个角度? 非常感谢,下面的图片就是我需要的: Angles over pivote

3 个答案:

答案 0 :(得分:7)

使用

Math.atan2(dy, dx)

其中dydx表示点和枢轴点之间的垂直和水平差异。

要记住的一些注意事项:

  • 参考(0弧度)按照惯例指向右侧,而不是图像中的左侧。如果您真的想从左侧开始测量,则必须Math.PI - angle进行转换。

  • Math - 三角函数以弧度为单位。要将结果转换为度数,您可以使用Math.toDegrees

  • 在数学世界中,增加y值指向上方。在你的形象中,他们指向下方。

答案 1 :(得分:2)

我会使用dot product的双重定义来计算这个,当你跳过垂直线上发生的令人讨厌的点,并处理象限

(原谅我的记法,因为数学在降价方面效果不好......)

其中AB都是包含xy成分的2D向量,而theta是它们之间的角度:

dot(A, B) = ax * bx + ay * by

dot(A, B) = |A| * |B| * cos(theta)

...其中|A|A的长度,可以使用Pythagorean theorem计算:

|A| = sqrt(ax^2 + ay^2)

因此:

theta = acos((ax * bx + ay * by) / (|A| * |B|))

答案 2 :(得分:1)

从连接任意两点p1&的线的水平线获得角度。 P2: Angle = atan((p1.y - p2.y)/(p1.x - p2.x)

所以,你的黑角= atan((454-243)/(286-108)) 注意:当y轴从左上角开始而不是左下角

时,y符号反转

角度将以弧度为单位,多次转换为度数(180 / pi)