【问题标题】:Plot 4 points based on the distance between them?根据它们之间的距离绘制 4 个点?
【发布时间】:2013-11-02 11:10:14
【问题描述】:

我有 4 个点之间的距离。我想在二维网格上绘制这些数据。

我尝试取一点并将其放在 (0,0) 上开始。然后我可以创建代表其他三个点的可能位置的圆圈。一旦达到这一点,我就可以锁定第二点的任意位置。做相同的可能位置,并为第 3 点找到两个可能的位置。我可以选择一个然后找出四个。我知道这是可能的,我可以在纸上得到答案,但我想知道是否有比其他人已经想出的更简单的方法。

如果有人可以为我指出正确的方向,或者让我阅读一些讨论确定这些点所涉及的公式的阅读材料,那就太好了。

谢谢!

我尝试过的:

points = [A, B, C, D] //unknown

angles = [AoA, AoB, AoC, AoD]

distances = [AB, AC, AD, BC, BD, CD] //known

A.x = 0 //seeded value
A.y = 0 //seeded value
B.x = AB
B.y = A.y
C.x = (AB² - BC² + AC²) / (2 * AB) //assume positive answer
C.y = Math.sqrt(BC² - (B.x - C.x)²) - B.y
D.x = ???
D.y = ???

【问题讨论】:

  • 你能澄清一下你的第二段吗?或许提供一些你做过的试验?
  • @farmerjoe 如果您有任何具体问题,请告诉我,我已经添加了更多详细信息。谢谢!
  • 说你有积分A, B, C, D,你有距离AB, AC, AD, BC, BD, CD吗?或类似AB, BC, BD, DA
  • @farmerjoe 我之间有距离。 AB, AC, AD, BC, BD, CD

标签: javascript canvas graph plot html5-canvas


【解决方案1】:

您将拥有一个由六个方程组成的系统:

AB^2 = (A.x - B.x)^2 + (A.y - B.y)^2  EQ[1]
AC^2 = (A.x - C.x)^2 + (A.y - C.y)^2  EQ[2]
AD^2 = (A.x - D.x)^2 + (A.y - D.y)^2  EQ[3]
BC^2 = (B.x - C.x)^2 + (B.y - C.y)^2  EQ[4]
BD^2 = (B.x - D.x)^2 + (B.y - D.y)^2  EQ[5]
CD^2 = (C.x - D.x)^2 + (C.y - D.y)^2  EQ[6]

您的问题本质上是为 8 个变量 Ax,Ay,Bx,By,Cx,Cy,Dx,Dy 解决这些问题,并将它们拟合到 2D 图形中。这允许根据选择的值而崩溃的整个解决方案范围。你这里有一个non-linear equations的系统。有许多不同的方法可以解决这些类型的方程:计算机,例如。 MathematicaMatlabPython 等,您可以手动使用Jacobian,或者通过代数操作变量。

您的圆圈可视化是一个很好的起点。从你的第一个点 A 开始,你将有四个同心圆,然后从每个圆上的每个点再开始四个同心圆。问题是this的扩展版本。

在这种情况下,您的优势是您可以选择两个初始值。希望这会为您指明正确的方向。我不确定您想使用哪种方法,但这是您正在处理的问题类型。

这是一张~漂亮的照片:

您的解决方案将沿着这些圆的线及其交点传播。

正如您所看到的,在您做出决定之前,您不会对每个点都有任何明确的答案,但是您可以看到当您选择 A,然后选择与 A 相关的 B,您将有两个选择 C,其中半径为 BC 的圆与半径为 AC 的圆相交。然后你将再次对 D 有两个选择,其中三个圆:从 A 到半径 AD,从 B 到半径 BD,从 C 到半径 CD 相交。

你可以在程序中设置你的方程来对第一个点做出一些任意决定,就像你对A = (0,0)B = (AB,0)一样,就像输入一个起点,第二个点总是+AB x 方向。然后求解找到方程的两个根,它定义了从 B 到半径为 BC 的圆和从 A 到半径为 AC 的圆。一旦定义了 C,对这三个圆的方程的根执行相同的操作。

【讨论】:

  • 太棒了,感谢您的出色回答。我想我已经弄清楚了如何解决 C.x 和 C.y (在上面添加)。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-03
  • 1970-01-01
  • 2021-01-26
  • 2018-05-20
  • 1970-01-01
  • 2011-09-13
  • 1970-01-01
相关资源
最近更新 更多