查找从 3d 中的另一个点投影的直线上的点的 3d 坐标 space

Find 3d coordinates of a point on a line projected from another point in 3d space

使用 Swift、ARTKit/SceneKit

我在 3d 中有一条线 AB,并且我有 A 点和 B 点的 xyz 坐标。 我也有一个 C 点,我也知道它的 xyz 坐标。

现在,我想求出直线AB上D点的xyz坐标;假设 CD 垂直于 AB。

在 Swift 中有什么简单的方法可以做到这一点。

用标量 t 参数化行 AB:

P(t) = A + (B - A) * t`

D = P(t) 使得 CD 垂直于 AB,即它们的点积为零:

dot(C - D, B - A) = 0

dot(C - A - (B - A) * t, B - A) = 0

dot(C - A, B - A) = t * dot(B - A, B - A)

// Substitute value of t

-->  D = A + (B - A) * dot(C - A, B - A) / dot(B - A, B - A)

Swift代码:

var BmA = B - A
var CmA = C - A
var t = dot(CmA, BmA) / dot(BmA, BmA)
var D = A + BmA * t;