上QQ阅读APP看书,第一时间看更新
3.4 空间平面
过空间一点,与已知直线相垂直平面唯一,即平面上一点和平面法向量确定一个平面。
平面法向量为n = [m, n, p]T,定点A坐标为(x0, y0, z0),平面任意点P坐标为(x, y, z)。如图3.20所示,向量PA垂直于n,得到如下平面解析式:
图3.20 空间平面定义
上式整理如下:
已知空间平面解析式如下:
它的任意一点法向量求解用本章前文方法,首先定义一个函数F(x, y, z)如下:
A点(x0, y0, z0)法向量通过下式求得:
从上式看到,平面各个点处法向量完全一致,和曲面上点具体位置无关。相信有些读者已经发现,上式n法向量定义和在上一章中介绍梯度几乎一致:
读者可能会发现,定义平面时通常采用的都是z = f(x, y)形式,即x和y为自变量,z = f(x, y)为因变量。假设c = -1,对平面方程式做一个整理,得到下式:
f(x, y)在某一点处梯度通过下式表达:
以上向量相当于空间法向量n在平面投影,如图3.21所示。在本章末会结合曲面继续讨论这一话题。
图3.21 空间法向量和平面投影
丛书第一册第5章中,展示过四个空间平面。这里,用以上方法求解并绘制法向量,如图3.22所示,发现平面上任意一点法向量平行。从梯度角度来看,这些梯度向量大小相等,方向相同。
图3.22 三个平面及其法向量
以下代码获得图3.22。
B4_Ch3_5.m syms x y z f1 = x + y - z; f2 = y - z + 5; f3 = x - z + 5; f4 = z - 5; figure(1) subplot(2,2,1) plot_fig(f1) subplot(2,2,2) plot_fig(f2) subplot(2,2,3) plot_fig(f3) subplot(2,2,4) plot_fig(f4) function plot_fig(f) syms x y z [xx,yy] = meshgrid([0:0.5:5,0:0.5:5]); f_z = solve(f,z); ff_z = double(subs(f_z, [x y], {xx,yy})); g = gradient(f, [x, y z]); mesh(xx,yy,ff_z); hold on x0 = xx(1:2:end,1:2:end); y0 = yy(1:2:end,1:2:end); z0 = ff_z(1:2:end,1:2:end); dFF_dx = subs(g(1), [x y z], {x0,y0,z0}); dFF_dy = subs(g(2), [x y z], {x0,y0,z0}); dFF_dz = subs(g(3), [x y z], {x0,y0,z0}); h1 = quiver3(x0,y0,z0,dFF_dx,dFF_dy,dFF_dz,... 'color',[255,153,255]/255); h1.AutoScaleFactor = 1; view(135,15); grid off; box on xlabel('x'); ylabel('y'); zlabel('z'); xticks([0:2:4]); yticks([0:2:4]); zticks([0:2:10]) end
如图3.23所示,空间内任意一点Q(xQ, yQ, zQ)到平面ax + by + cz + d = 0距离为d,d计算式如下:
图3.23 空间任意一点到平面距离
上式可以推广到点到超平面距离;此外,这一公式的向量运算形式将出现在丛书第五本支持向量机(Support Vector Machine, SVM)内容中。