在Swift,ARTKit / SceneKit中工作
我在3d中有一条线AB,并且我有两个点A和B的xyz坐标。 我也有一个点C,我也知道它的xyz坐标。
现在,我想找出AB线上D点的xyz坐标;鉴于CD垂直于AB。
在Swift中做这件事的简单方法是什么。
答案 0 :(得分:2)
使用标量AB
对行t
进行参数设置:
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)
快捷代码:
var BmA = B - A
var CmA = C - A
var t = dot(CmA, BmA) / dot(BmA, BmA)
var D = A + BmA * t;