鉴于用户先前选择的两点,我想在arkit中将平面节点添加到我的虚拟世界中。
答案 0 :(得分:0)
两个点不足以定义一个唯一的平面。两个任意点共享的空间是一条直线-无限多个平面可以共享该直线(将它们作为旋转轴)。
如果要基于任意用户选择的点定义平面,则可以探索其他一些选项:
让用户选择三个点而不是两个,因为三个点定义了一个唯一的平面。取由这些点形成的三角形的两条腿的叉积,您将获得平面的法线向量,该向量会告诉您其方向。
选择两个点,然后假定在所有可能的连接这些点的平面中,用户想要一个特定的平面-例如,一个其法向矢量最接近垂直方向的平面。 (更多交叉产品可能会在这里有所帮助。)
假定用户想要一个水平的平面(平行于x-z平面)。对于水平面,只需要一个用户放置点。
根据说明,您正在寻找垂直平面:
let segment = pointA - pointB
或类似let normal = cross(segment, float3(0,1,0))
node.simdOrientation = simd_quatf(from: float3(0,1,0), to: normal)