我在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内的点D的分数坐标(p1,p2)

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top