使用已知距离的其他两个点找到三角形的第三个点

5
在上面的图片中,我有三个点 (x1,y1)(x2,y2)(x3,y3)
我知道 x1,y1x2,y2 的值。我知道 (x1,y1)->(x3,y3)(x2,y2)->(x3,y3) 的欧几里得距离。有了这些信息,我该如何找到 (x3,y3)
期望得到代码片段或逻辑将非常有用...
我已经尝试使用圆方程来解决这个问题,但不知道如何继续。

5
应该发布在http://math.stackexchange.com/上。 - kumarharsh
7
“而且它也属于这里。” - Alex
5
我投票关闭此问题,因为它与编程或软件开发无关,而是涉及 [math.se]。 - Pang
3
问题在于math.stackexchange.com不喜欢用Javascript编写答案,而使用所有数学符号和线条会使非数学专业人士难以理解答案。需要有一个地方让数学问题和Javascript共存。 - Felix Eve
1个回答

9
我们可以运用一些三角学知识来解决这个问题:
余弦定理(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的两个可能点。


为什么要使用phi常数?我的意思是,问题中没有给出任何角度。 - Julián
Phi不是作为常数使用的,而是从问题中的变量导出的一种度量。实际上,只使用了它的正弦和余弦。 - Nico Schertler
谢谢,我理解cos phi和sin phi就像变量一样,但我有问题,如何解决表达式P1 + (d2/d1 ...)?我的意思是P1是一个点(x,y),而(d2/d1 * ...)的结果是一个数字,抱歉这么详细 :( - Julián
1
你需要使用 d2/d1 作为最后一个向量(显示在两行中)的因子。将两个分量都乘以这个因子。 - Nico Schertler
终于搞定了,非常感谢兄弟 :) - Julián

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接