如何找到既给出(2点上线)第三点(从第三点到第一点的距离)(How to find a third

2019-10-21 08:11发布

“如何找到既给出(2点上线)第三点(从第三点到第一点的距离)?” 语言:Visual Basic中(2012年)

第三点是在同一行作为第二,和可以是更接近第一点或者它可以是更接近第二。 这是将同时处理(从数据阵列)的功能。

奇怪的是我似乎无法把握这个问题的距离的一部分。 在阅读上找到其他点的点很多其他的问题,我无法找到任何足够清楚对我来说,能够进行逆向工程,以包括距离的参数。

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

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

Answer 1:

让我们先来点坐标为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

P3坐标情况下,当P1P3和P1P2矢量具有相同的方向:

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

为相反的方向:

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


Answer 2:

行的一般方程是:

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

你可以很容易地找到A,B,G,因为你知道线(点一和二)的两分。 距离是:

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

第三点是上线所以从(1):

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

由式(2)和(3),你可以找到解决方案。 由于(2)第二学位,你会发现两种解决方案。



文章来源: How to find a third point given both (2 points on a line) and (distance from third point to first point)