延长线(双向) – 穿越零线

我试图延长线,一定数量。 我想将修改应用到这两行上的点,并在两个方向上进行扩展。 而不是从目前的位置移动(中心点扩展是可以接受的,但我不知道如何应用它)。

确切的细节:

线:

点1 [X = 1,Y = 4],点2 [X = -1,Y = 6]

线归一化vector: V = [X = -0.707106,Y = 0.707106]

展开: E = 1

所以我正在寻找的结果是

新线= [1.707,4.707]〜[-1.707,6.707]

当我乘以Point2 [X] +((0-V [x])* E)= – 0.292

有人可以给一个简单的例子。 Psudo代码,太棒了!

我知道这是因为我穿越了零线,但是我确定有一个更好的方法来做这个比testing如果点大于零或小于零。

StartX, StartY <---> EndX, EndY Normalised = -0.707, 0.707 Inverse Normalised = 0.707, -0.707 Extend in both directions by E NewStartX = StartX + (E * InvNormX) NewStartY = StartY + (E * InvNormY) NewEndX = EndX + (E * NormX) NewEndY = EndY + (E * NormY) 

即使用上面的数字就可以了

 NewStartX = 1 + (E * InvNormX) = 1 + (1 * 0.707) = 1.707 NewStartY = 4 + (E * InvNormY) = 4 + (1 * -0.707) = 3.293 NewEndX = -1 + (E * NormX) = -1 + (1 * -0.707) = -1.707 NewEndY = 6 + (E * NormY) = 6 + (1 * 0.707) = 6.707