我有一条线存在于 3d 中,位于两个已知点之间:{X1, Y1, Z1} 和 {X2, Y2, Z2}。
我也知道我对其中一个点有一定的距离:D
如何确定从 {X1, Y1, Z1} 移动 D 后我所在点的坐标?
谢谢
我有一条线存在于 3d 中,位于两个已知点之间:{X1, Y1, Z1} 和 {X2, Y2, Z2}。
我也知道我对其中一个点有一定的距离:D
如何确定从 {X1, Y1, Z1} 移动 D 后我所在点的坐标?
谢谢
假设您要将距离 D 从点 1 移动到点 2 :
P1 = [ X1, Y1, Z1 ]
P2 = [ X2, Y2, Z2 ]
线向量可以描述为:
V = P2 - P1 = [ Xv = X2 - X1, Yv = Y2 - Y1, Zv = Z2 - Z1 ]
线的长度可以确定为:
VL = SQRT(Xv^2 + Yv^2 + Zv^2) // ^2 = squared
线的反面,也就是单位向量,可以确定为:
v = V / VL = [Xv / VL, Yv / VL, Zv / VL]
目标点 PD 可以确定为:
Pd = P1 + D * v // Starting from P1 advance D times v
请注意,P1 和 v 是向量,D 是标量
首先,确定线段的长度:
d=sqrt((X1-X2)^2+(Y1-Y2)^2+(Z1-Z2)^2))
您正在将 D 从 P1=(X1,Y1,Z1) 移向 P2=(X2,Y2,Z2)。这使您处于 (X3,Y3,Z3) 点:
{XYZ}3={XYZ}1+(D/d)*({XYZ}2-{XYZ}1})
将其扩展为 3 个方程,X、Y 和 Z 各一个。
这是有效的,因为您是 P1 和 P2 之间的 D/d。检查:说 D=d。那么你应该正好在P2。
取两点之间的向量
<X2-X1, Y2-Y1, Z2-Z1>
将其转换为指向同一方向但长度为 1 的单位向量。您可以通过除以两点之间的距离来实现:
<X2-X1, Y2-Y1, Z2-Z1>
---------------------------------------
sqrt((X2-X1)^2 + (Y2-Y1)^2 + (Z2-Z1)^2)
然后将它乘以 D 并添加到您的原始点以获得新点。
<X2-X1, Y2-Y1, Z2-Z1>
(X1, Y1, Z1) + D * ---------------------------------------
sqrt((X2-X1)^2 + (Y2-Y1)^2 + (Z2-Z1)^2)
这是一个线性组合问题:
dist = 距离(p1,p2)
给定距离 D
f = D / dist(LineSeg (p1, p2) 内 D 点的小数坐标
pD = LinearCombo (1-f, p1, f, p2)(点距离 D 到 p1 的坐标)