0

我有一条线存在于 3d 中,位于两个已知点之间:{X1, Y1, Z1} 和 {X2, Y2, Z2}。

我也知道我对其中一个点有一定的距离:D

如何确定从 {X1, Y1, Z1} 移动 D 后我所在点的坐标?

谢谢

4

4 回答 4

4

假设您要将距离 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 是标量

于 2009-09-17T05:05:38.193 回答
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。

于 2009-09-17T04:41:02.767 回答
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)
于 2009-09-17T04:44:06.483 回答
0

这是一个线性组合问题:

dist = 距离(p1,p2)

给定距离 D

f = D / dist(LineSeg (p1, p2) 内 D 点的小数坐标

pD = LinearCombo (1-f, p1, f, p2)(点距离 D 到 p1 的坐标)

于 2016-04-16T21:24:42.827 回答