如何找到给定(直线上的两个点)和(从第三点到第一点的距离)的第三点

Cha*_*ord 1 vb.net geometry point line

“在给定(一条线上的 2 个点)和(从第三点到第一点的距离)的情况下,如何找到第三点?” 语言:Visual Basic (2012)

第三个点与第二个点在同一条线上,并且可能离第一点更近,也可能离第二点更近。这是一个将处理两者(来自数据数组)的函数。

奇怪的是,我似乎无法掌握这个问题的距离部分。通过阅读有关从其他点寻找点的许多其他问题,我无法找到足够清晰的内容,以便我能够进行逆向工程以包含距离参数。

我需要能够使用距离来找到一个点。我正在编写的函数基本上是一种更高级的形式:

Function GetThirdPoint(CenterPoint As Point, SecondPoint As Point, Range As Integer)
  Return [Equations here] 'Return third point
End Function
Run Code Online (Sandbox Code Playgroud)

MBo*_*MBo 8

让我们的第一个点坐标是 P1=(x1,y1),第二个点 P2=(x2,y2)。
然后 P1P2 向量的长度是(Math.Hypot如果可用,使用函数)

Len = Sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1))
Run Code Online (Sandbox Code Playgroud)

归一化(单位长度)方向向量是

dx = (x2-x1) / Len
dy = (y2-y1) / Len
Run Code Online (Sandbox Code Playgroud)

当 P1P3 和 P1P2 矢量具有相同方向时的 P3 坐标:

x3 = x1 + Distance * dx
y3 = y1 + Distance * dy
Run Code Online (Sandbox Code Playgroud)

反方向:

x3 = x1 - Distance * dx
y3 = y1 - Distance * dy
Run Code Online (Sandbox Code Playgroud)

  • 这解决了我长期存在的问题之一。谢谢。 (2认同)