我在3d中存在一条线,它位于两个已知点之间:{X1,Y1,Z1}和{X2,Y2,Z2}。
我也知道我对其中一个点有一定的距离:D
如何从{X1,Y1,Z1}移动D后确定我所在点的坐标是什么?
由于
答案 0 :(得分:3)
假设您想将距离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是标量
答案 1 :(得分:1)
首先,确定线段的长度:
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。
答案 2 :(得分:0)
取两点之间的向量
<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)
答案 3 :(得分:0)
这是一个线性组合问题:
dist =距离(p1,p2)
给出距离D
f = D / dist(LineSeg内点D的分数坐标(p1,p2)
pD = LinearCombo(1-f,p1,f,p2)(点距离D与p1的坐标)