如何在给定(一条线上的 2 个点)和(从第三点到第一个点的距离)的情况下找到第三个点



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

第三个点与第二个点

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

奇怪的是,我似乎无法理解这个问题的距离部分。在阅读许多其他关于从其他点查找点的问题时,我无法找到足够清晰的东西,以便能够逆向工程以包含距离参数。

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

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

让我们的第一个点坐标是 P1=(x1,y1),第二个点 P2=(x2,y2)。
那么 P1P2 载体的长度为(如果可用,请使用Math.Hypot函数)

Len = Sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1))

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

dx = (x2-x1) / Len
dy = (y2-y1) / Len

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

x3 = x1 + Distance * dx
y3 = y1 + Distance * dy

对于相反的方向:

x3 = x1 - Distance * dx
y3 = y1 - Distance * dy

直线的一般等式为:

A*x + B*y + G = 0 where A, B must not be both equal to 0. (1)

您可以轻松找到 A、B、G,因为您知道直线的两个点(点 1 和 2)。距离为:

D = sqrt( (x1 - x3)(x1 - x3) + (y1 - y3)(y1 - y3) ) (2)

第三点在(1)的线上:

A*x3 + B*y3 + G = 0 (3)

从(2)和(3)中,您可以找到解决方案。因为(2)是二度,你会找到两个解决方案。

最新更新