如何获得3d中点到平面的距离?

Kon*_*kyi 1 3d geometry point projection plane

我有一个三角形,其中包含点 A、B、C 和空间中的点 (P)。如何获得点到平面的距离?我需要计算从 P 到平面的距离,即使我的三角形距离很远(或者不在该点上方,如图所示)。

点和三角形:

Spe*_*tre 7

我假设你想计算点和平面之间的垂直距离,给定其上的 3 个点形成一个三角形。这里是矢量数学方法:

  1. 定义

    设三角形点为p0,p1,p2和 测试点p

  2. 平面法线

    首先我们需要获得平面法线,即平面内任意两个非平行且非零向量的简单向量乘法:

    n = cross( p1-p0 , p2-p0 )
    
    Run Code Online (Sandbox Code Playgroud)

    并将其标准化为单位向量(以简化内容):

    n = n/|n|
    
    Run Code Online (Sandbox Code Playgroud)
  3. 垂直距离

    我们可以利用点积来实现这一点,所以只需创建一个从平面上的任何点到您的测试点的向量,并用单位法线点...

    dist = |dot ( p-p0 , n )|
    
    Run Code Online (Sandbox Code Playgroud)

    perp。 距离

    最后一个绝对值(在标量距离上)将去掉结果的符号,它告诉您该点p是在法线方向n还是相反方向,有时需要这样的信息,因此在这种情况下删除最外面的绝对值并使用多边形缠绕和叉积操作数顺序以保持所需的法线方向。

在这里(查找[edit2])您将找到cross,dot||等式(如果需要):

所以如果我将所有内容放在类似形式的代码中:

n = cross( p1-p0 , p2-p0 )
Run Code Online (Sandbox Code Playgroud)