3d 给定三维空间中的两点,如何找到与它们相交的平面?
我想向arkit中的虚拟世界添加一个平面节点,前提是用户之前选择了两个点。两个点不足以定义唯一的平面。两个任意点共享的空间是一条直线——无限多个平面可以共享该直线(将它们作为旋转轴关联) 如果要基于用户选择的任意点定义平面,可以使用以下几个其他选项:3d 给定三维空间中的两点,如何找到与它们相交的平面?,3d,intersection,point,arkit,plane,3d,Intersection,Point,Arkit,Plane,我想向arkit中的虚拟世界添加一个平面节点,前提是用户之前选择了两个点。两个点不足以定义唯一的平面。两个任意点共享的空间是一条直线——无限多个平面可以共享该直线(将它们作为旋转轴关联) 如果要基于用户选择的任意点定义平面,可以使用以下几个其他选项: 让用户选择三个点而不是两个点,因为三个点定义了一个唯一的平面。取由这些点构成的三角形的两条腿的叉积,你就得到了平面的法向量,它告诉你它的方向 选择两个点,然后假设在连接这些点的所有可能平面中,用户想要一个特定的点,比如说,其法向量最接近垂直的点。
- 让用户选择三个点而不是两个点,因为三个点定义了一个唯一的平面。取由这些点构成的三角形的两条腿的叉积,你就得到了平面的法向量,它告诉你它的方向
- 选择两个点,然后假设在连接这些点的所有可能平面中,用户想要一个特定的点,比如说,其法向量最接近垂直的点。(更多的交叉产品可能会有所帮助。)
- 假设用户想要一个水平的平面(平行于x-z平面)。对于水平平面,您只需要一个用户放置的点
从说明您正在寻找垂直平面开始:
let segment=pointA-pointB
或simliarlet normal=cross(segment,float3(0,1,0))
node.simdOrientation=simd_quatf(from:float3(0,1,0),to:normal)
谢谢你的回答。我的问题应该更详细一些。在我的例子中,我在寻找一个垂直面,这就是为什么我假设两点就足够了。在这种情况下,我将如何定义平面?