猿问

如何从三点计算角度?

如何从三点计算角度?

让我们说你有这个:


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。我需要它,但没有标记它们。


大话西游666
浏览 1518回答 3
3回答

慕雪6442864

如果你的意思是P1是顶点的角度那么使用余弦定律应该有效:ARCCOS((P 12 2 + P 13 2 - P 23 2)/(2 * P 12 * P 13))其中P 12是从P1到P2的段的长度,由...计算sqrt((P1 x - P2 x)2 +(P1 y - P2 y)2)

神不在的星期二

如果你认为它是两个向量,一个从点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

处理角度计算的最佳方法是使用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是在这种情况下没有意义谈论的角度。
随时随地看视频慕课网APP
我要回答