查找从 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;
使用 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;