在3D空间中的2个点之间延伸线

时间:2014-07-29 09:30:20

标签: c 3d geometry line points

假设我在3D空间中有2个点,其中一个位于:

x=2, y=3, z=5

和第二个:

x=6, y=7, z=10

在代码中,通过扩展(例如,加倍)这两点(相对于第一点)之间的距离来计算第三点的坐标的最快方法是什么?

1 个答案:

答案 0 :(得分:2)

如果你想要一个延伸到(x2,y2,z2)以外的点超出(x1,y1,z1)

x3 = x2 + (x2 - x1) (= 10)
y3 = y2 + (y2 - y1) (= 11)
z3 = z2 + (z2 - z1) (= 15)

或:

(x2 * 2 - x1, y2 * 2 -y1, z2 * 2 - z1)

这很简单。

如果你想要的东西不是长度的两倍,你可以缩放(x2 - x1) - 类型的术语。例如,如果您希望它比当前行长50%,请将它们乘以0.5(+ 50%)。如果你想要它的三倍,可以将它们乘以2(+ 200%)。

对于可以执行此扩展的代码,就像这样,它会为您提供一个端点pDest,与p1形成一条线{{1} } {} percent的大小:

p1-p2