在上图中,我有三个点(x1,y1)
(x2,y2)
(x3,y3)
。
我知道x1,y1
和x2,y2
的值。我知道(x1,y1)->(x3,y3)
的欧氏距离
和(x2,y2)->(x3,y3)
。有了这些信息,我如何才能找到(x3,y3)
?
我希望任何类似代码段或逻辑都有用......
我试图用圆圈方程解决这个问题,但我不知道如何继续。
答案 0 :(得分:5)
我们可以使用一点三角函数来解决这个问题:
余弦定理(phi是第一点的内角):
d3^2 = d1^2 + d2^2 - 2 d1 d2 cos phi
cos phi = (d1^2 + d2^2 - d3^2) / (2 d1 d2)
对于给定的余弦,我们可以计算相应的正弦值:
cos^2 phi + sin^2 phi = 1
sin phi = +- sqrt(1 - cos^2 phi)
因此,第一点的角度有两种解决方案。一个积极的和一个消极的。
我们可以使用此角度将差异向量diff1 = (x2 - x1, y2 - y1)
旋转为指向第三个点:
P3 = P1 + d2/d1 * / cos phi * (x2 - x1) - sin phi * (y2 - y1))
\ sin phi * (x2 - x1) + cos phi * (y2 - y1))
没有必要计算实际角度,因为我们只需要它的正弦和余弦。将正弦值的两个计算值都放入,并为P3获得两个可能的点。