【问题标题】:Finding a point along an imaginary line between two other points沿着其他两个点之间的假想线找到一个点
【发布时间】:2017-10-19 06:33:18
【问题描述】:

我正在开发一款游戏,但遇到了问题。我希望有人帮助我:

屏幕上有3个指定点

P0、P1、P2

P3 = 如果我们有 P1 和 P2 位置,我们需要找到的目标点(X3 和 Y3)。


我们有什么信息:

1-P0 位置 (X,Y) 已知。

2- P0和P1之间的距离已知

3- P0和P2之间的距离已知

4-红线和蓝线的夹角已知

如何找到 P1 和 P2(x1,y1 和 x2,y2)的位置?

第二个问题更重要:

2- 如果我有 P1 和 P2 的位置,我怎样才能找到假想线上的 P3 穿过 P1 和 P2 并且 P3 与 P2 之间的距离是一个特定的数字? (本例中为 40)

【问题讨论】:

  • 在上面你似乎暗示你有 P1 和 P2,但是你问如何在下面找到它。我认为您至少需要其中一个点,因为我可以轮换您的整个设置,并且每个给定的设置都会保留
  • 是的,看起来,但我在我的描述中解释说我们在问题的第一部分没有 P1 和 P2,在问题 2 中我们假设我们有它们。因此说 a.k.答案就是我要找的第二部分。
  • 仅供参考,我的答案完全相同,但我承认他的答案更简洁,可能对计算更友好:cos(theta) = (x2-x1)/d,其他部分相同.并不是说我关心选票,而是让您意识到如果您遇到具有不同直接变量的类似情况,您可以通过不同的方式解决它

标签: math geometry line


【解决方案1】:

你可以用一点向量算术来解决第二个问题。
向量P1->P2的长度为

d = sqrt((x2-x1)^2 + (y2-y1)^2)

因此P1->P2方向的单位向量为

((x2-x1)/d, (y2-y1)/d)

将此乘以 40 得到 P2->P3

(40*(x2-x1)/d, 40*(y2-y1)/d)

最后将P2->P3加到P2上得到P3

(x2 + 40*(x2-x1)/d, y2 + 40*(y2-y1)/d)

【讨论】:

  • 太棒了,非常感谢。这就是我要找的。我想我可以顺便用 sin 和 cos 解决第一部分。
【解决方案2】:

如果第 2 部分有 P1 和 P2:线段 P1P2 与由 theta = tan((P2.y-P1.y)/(P2.x-P1.x)), P3 给出的地平线形成一个角度然后在 (40*cos(theta), 40*sin(theta)) 相对于 P2 (所以认为它是从 P2 的偏移量)。

【讨论】:

    【解决方案3】:

    您无法解决问题的第 1 部分。有一个已知点 P0 和到未知点 P1 的距离。但要计算 P1 的坐标,我们需要距离线 1(蓝色)与 x 轴或 y 轴的角度。另一条距离线(Dist2,红色)与另一未知点 (P2) 之间只有一个角度。

    因此,如果您有两点之间的距离并且给出了一个点,则您需要这两个点的距离线显示的方向信息。因此,您需要一个带有 x 或 y 轴的角度。

    这可以转移到 3-D 空间。给出一个点和到另一个点的距离。但在 3-D 中,我们需要两个角度来描述未知点的方向。在二维中,您有一个直角三角形来计算未知点的坐标。在 3-D 中,有两个直角三角形,很难绘制或想象。但是,如果您使用三角形而不是向量算术(参见第 2 部分的 Bens 答案),您无需学习向量算术就可以解决类似的问题。
    也许您可以将向量算术简化为三角形。

    【讨论】:

      猜你喜欢
      • 2013-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 2020-02-03
      • 2011-12-17
      • 1970-01-01
      相关资源
      最近更新 更多