三维平面的向量表示法

我们都知道平面可以表示为Ax+By+Cz+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,可以化简为ax+by+cz-ax0-by0-cz0=0。
上面两个式子一对比,就能发现a=kA,b=kB,c=kC,-a
x0-by0-cz0=kD。取k=1,就可以得到系数相等。所以,看到平面的一般式就能够得到法线为n=(A,B,C)。
根据上面的结论,进一步推广,我们可以把一般式改成点积的形式(A,B,C)(x,y,z)+D=0。这个就是平面的向量表示,即**nP+d=0。那么这个向量表示法有什么意义了。首先,在程序实现中,我们只需要保存法线n和系数d就可以了。
其次,d还代表从原点到平面上任意点的向量在法线上的投影长度。所以,利用这个信息,可以方便的求出任意点到平面的距离。
假设n为单位法线,假设任意点为q,q在平面上的投影为q’,那么向量
(q-q’)=kn。意思是向量(q-q’)肯定和法线共线,长度是其k倍。在上式两边乘以n,可以得到(q-q’)n=knn,即(qn-q’n)=k,即k=q*n-q’n。由于q’是平面上的点,所以q’n=-d,那么,k=qn+d。k即是点q到平面的长度,其中q,n,d都是已知的。运用这个式子的时候,必须得先归一化n**。
现在可以很清晰的看到,如果我们将平面表示为向量形式,而且n是归一化的,那么计算任意点到平面的距离是非常方便的。