“如何找到既给出(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
P3坐标情况下,当P1P3和P1P2矢量具有相同的方向:
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,因为你知道线(点一和二)的两分。 距离是:
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)