如何从三点计算角度?让我们说你有这个:P1 = (x=2, y=50)P2 = (x=9, y=40)P3 = (x=5, y=20)假设这P1是圆的中心点。它总是一样的。我想要由P2和组成的角度P3,或者换句话说,接下来的角度P1。内角是精确的。它总是一个锐角,所以小于-90度。我想:伙计,这是简单的几何数学。但我现在已经找了大约6个小时的公式,而且只找到人们谈论复杂的美国宇航局的东西,如arccos和矢量标量产品。我的头感觉像在冰箱里。一些数学大师认为这是一个简单的问题吗?我不认为编程语言在这里很重要,但对于那些认为它的人来说:java和objective-c。我需要它,但没有标记它们。
3 回答
神不在的星期二
TA贡献1963条经验 获得超6个赞
如果你认为它是两个向量,一个从点P1到P2,一个从P1到P3,它变得非常简单
所以:
a =(p1.x - p2.x,p1.y - p2.y)
b =(p1.x - p3.x,p1.y - p3.y)
然后,您可以反转点积公式:
获取角度:
请记住,这只是意味着:a1 * b1 + a2 * b2(这里只有2个尺寸......)
ITMISS
TA贡献1871条经验 获得超8个赞
处理角度计算的最佳方法是使用atan2(y, x)
给定点x, y
返回该点的角度和X+
相对于原点的轴。
鉴于计算是
double result = atan2(P3.y - P1.y, P3.x - P1.x) - atan2(P2.y - P1.y, P2.x - P1.x);
即你基本上由两个点翻译-P1
(换句话说,让你翻译的一切P1
,然后你考虑的绝对角度的差异在原点结束)P3
和P2
。
优点atan2
是表示整圆(你可以在-π和π之间得到任何数字),而acos
你需要根据符号处理几种情况来计算正确的结果。
唯一的奇点atan2
是(0, 0)
......它意味着P2
和P3
必须来自不同的P1
是在这种情况下没有意义谈论的角度。
添加回答
举报
0/150
提交
取消