分享

三维平面的向量表示法

 戎笔 2017-06-01

我们都知道平面可以表示为A*x+B*y+C*z+d=0,但是很多人不知道这个表达式隐含的意义。

  从另一个角度,点法式来看平面,假设法线n=(a,b,c),平面上一点p0(x0,y0,z0),平面上任意一点p为(x,y,z)。那么平面可以表示为n*(p-p0)=0,即(a,b,c)*(x-x0,y-y0,z-z0)=0,可以化简为a*x+b*y+c*z-a*x0-b*y0-c*z0=0。

  上面两个式子一对比,就能发现a=kA,b=kB,c=kC,-a*x0-b*y0-c*z0=kD。取k=1,就可以得到系数相等。所以,看到平面的一般式就能够得到法线为n=(A,B,C)。

  根据上面的结论,进一步推广,我们可以把一般式改成点积的形式(A,B,C)*(x,y,z)+D=0。这个就是平面的向量表示,即 n*P+d=0 。那么这个向量表示法有什么意义了。首先,在程序实现中,我们只需要保存法线n和系数d就可以了。

  其次,d还代表从原点到平面上任意点的向量在法线上的投影长度。所以,利用这个信息,可以方便的求出任意点到平面的距离。

  假设n为单位法线,假设任意点为q,q在平面上的投影为q’,那么向量 (q-q’)=kn 。意思是向量(q-q’)肯定和法线共线,长度是其k倍。在上式两边乘以n,可以得到(q-q’)*n=kn*n,即(q*n-q’*n)=k,即k=q*n-q’n。由于q’是平面上的点,所以 q’*n=-d ,那么, k=q*n+d 。k即是点q到平面的长度,其中q,n,d都是已知的。运用这个式子的时候,必须得先 归一化n

  现在可以很清晰的看到,如果我们将平面表示为向量形式,而且n是归一化的,那么计算任意点到平面的距离是非常方便的。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多