确定 3D 中的点坐标

0 math 3d geometry euclidean-distance

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

(X1,Y1,X1)----------(X2,Y2,Z2)
Run Code Online (Sandbox Code Playgroud)

这些点之间的直线上有一个点 (Xd,Yd,Zd),距 (X1,Y1,Z1) 的距离为 D。

(X1,Y1,X1)---D---(Xd,Yd,Zd)-----(X2,Y2,Z2)
Run Code Online (Sandbox Code Playgroud)

如何确定点(Xd,Yd,Zd)的坐标?

Mac*_*iek 5

假设您要将距离 D 从点 1 移动到点 2 :

P1 = [ X1, Y1, Z1 ]
P2 = [ X2, Y2, Z2 ]
Run Code Online (Sandbox Code Playgroud)

线向量可以描述为:

V = P2 - P1 = [ Xv = X2 - X1, Yv = Y2 - Y1, Zv = Z2 - Z1 ]
Run Code Online (Sandbox Code Playgroud)

线的长度可以确定为:

VL = SQRT(Xv^2 + Yv^2 + Zv^2)     // ^2 = squared
Run Code Online (Sandbox Code Playgroud)

线的向量(又名单位向量)可以确定为:

v = V / VL = [Xv / VL, Yv / VL, Zv / VL]
Run Code Online (Sandbox Code Playgroud)

目标点PD可确定为:

Pd = P1 + D * v // Starting from P1 advance D times v
Run Code Online (Sandbox Code Playgroud)

请注意,P1 和 v 是向量,D 是标量