“如何找到第二个点(两条线在一条线上)和(从第三点到第一点的距离)?” 语言:Visual Basic(2012)
第三个点与第二个点在同一条线上,并且可以更接近第一个点,也可以更接近第二个点。这是一个可以同时处理(来自数据数组)的函数。
奇怪的是我似乎无法掌握这个问题的距离部分。在阅读其他许多关于从其他点找到积分的问题时,我无法找到足够清晰的东西让我能够进行逆向工程以包含距离参数。我需要能够使用距离来找到一个点。我写的函数基本上是一种更高级的形式:
Function GetThirdPoint(CenterPoint As Point, SecondPoint As Point, Range As Integer)
Return [Equations here] 'Return third point
End Function
答案 0 :(得分:4)
让我们的第一个点坐标为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
答案 1 :(得分:1)
一行的一般等式是:
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)是二度,你会发现两个解。