二次曲面是空间解析几何学重要的组成部分,它包括椭球面、虚椭球面、单叶双曲面、双叶双曲面、二次锥面、椭圆抛物面、双曲抛物面、椭圆柱面、虚椭圆柱面、双曲柱面,抛物柱面等十几种曲面。它的性质、种类特别容易混淆。尤其是它的图象。传统的空间解析几何,对于二次曲面的教学,大多数是教师按教学大纲的要求,通过二次曲面的方程,利用代数的方法讨论它的形状。这种教学方法优点是理论推推导严密,缺点是缺乏几何直观性。学生很难通过方程想象出它的图形。这给教学带来很发的困难。随着科学技术的不断发展,计算机被引入到教学中来,使教学更加具体化、形象化。
Matlab和Mathematica软件是两种比较完善的数学软件。Mathematica是由Wolfram公司设计开发的一个数学软件。可以用来进行数值计算、符号运算和图形显示等各方面的工作。Mathematica受到科学工作者。工程技术人员,学生和教育工作者的欢迎,已经是全世界广泛应用的数学软件之一。它的应用涉及科研、工程以及商务等各个领域。Mathematica具有强大的绘图功能,几乎可以做出所有常见的一元、二元函数的图象,还可以制作多幅画面连续放像的动画函数图形,它在计算方面的功能也很突出,并且拥有自己的语言。对于某种稍微复杂一点的问题,可以通过编程解决。
Matlab则是非常优秀的科学计算和图形显示软件。它的自身的一套语言,与其他高级语言相比,Matlab提供了一个人机交互的数学环境,并且以矩阵作为基本的数据结构,可以大大节省编程时间。另外,Matlab语法规则简单,容易掌握,调试方便。还可以存储和提取中间计算结果数据。这使得Matlab对各种公式曲面的绘制变得简便、快捷且精确。
二次曲面的作图比较复杂。比如马鞍面。通常可以采用拼接法绘制复杂曲面。即把复杂的曲面划分成为若干个简单的曲面,分别绘制完成后再拼接到一起,但绘制方法繁琐,而且误差很大,而精确绘制各种公式曲面恰好正是Matlab的长项,是非常方便快捷的。
本文将主要运用Matlab软件辅助作出二次曲面的图象,并对图象的各种变化进行探.
第1章 二次曲面作图
对于二次曲面方程
Ax2+By2+Cz2+2Dxy+2Exz+2Fyz+2Gx+2Hy+2Mz+N=0 给定A、B、C、D、E、F、G、H、M、N,则经过计算可知其表示的曲面方程。计算和判断过程如下:
1、给定A、B、C、D、E、F、G、H、M、N。 2、按如下过程计算I1、I2、I3、I4、K1、K2:
ADAEBFI1=A+B+C I2=
DB +
EC +
FC
AI3=DDBFBHEF I4=CHNCMMNADEGDHFHEFCMGHMN
EK1=
AGGN++
AK2=DDBHGNAECGNBHFCMHM NH+EM+FGGM3、判断结果:
⑴当I2>0,I1I3>0,I4<0时,为椭球面;⑵当I2>0,I1I3>0,I4>0时,为虚椭球面;⑶当I2>0,I1I2>0,I4=0时,为点;⑷当I3≠0,I2≤0,I4>0时,为单叶双曲面;⑸当I3≠0,I2≤0,I4<0时为双叶双曲面;⑹当I3≠0,I2≤0,I4=0时,为二次锥面;⑺当I3=0,I4<0时,为椭圆抛物面;⑻当I3=0,I4>0时,为双曲抛物面;⑼当I3=I4=0,I2>0,I1K2<0时,为椭圆柱面;⑽当I3=I4=0,I2>0,I1K2>0时,为虚椭圆柱面⑾当I3=I4=0,I2>0,K2=0时,为直线;⑿当I3=I4=0,I2<=,K2≠0时,为双曲柱面;⒀当I3=I4=0,I2<0,K2=0时,为一对相交平面;⒁当I3=I4=I2=0,K2≠0时,
为抛物柱面;⒂当I3=I4=I2=K2=0,K1<0时,为一对平行平面;⒃当I3=I4=I2=K2=0,K1>0时,为一对虚平行平面;⒄当I3=I4=I2=K2=K1=0时,为一对重合平面。[1]
1、1 抛物面
双曲抛物面和椭圆抛物面统称为抛物面。方程分别为 和 。双曲抛物面关于ZX面和YZ面是对称的。因而关于Z轴也是对称的,没有对称中心。它与对称轴只有一个交点——原点。
三个坐标面的截口曲线为:
y2bzx022(1)
x2ay022x2z (2) a2y220bz0 (3)
(1)和(2)分别是YZ面和ZX面上的抛物线,她们有共同的对称轴Z轴和共同的顶点,但开口方向相反。
为了进一步看出双曲抛物面的形状。我们用平行XY面的平面Z=h去截它,
x2截口为a2y222hbzh 只有h≠0,它总是双曲线:当h>0时,实轴平行
与X轴,虚轴平行Y轴,顶点(±2hb,0,h )在抛物线(2)上;当h〈0时,实轴平行Y轴,虚轴平行于Y轴,顶点(0,±2hb,h)在抛物线(1)上;当h=0时,截口变成一对相交直线;当h由-∞变到 +∞时,变动的曲线就产生双曲抛物面,它在XY面上放的部分沿着X轴的两个方向上升,在XY面下方的部分沿着Y轴的两个方向下降,大体形状像一只马鞍。
这个曲面的形状比较复杂,为了进一步熟悉,我们再作平行ZX的平面Y=k
2x去截它,截口为 2a2kz2(4)不论k值如何,它总是一2bk222yk)
条抛物线,而且它的形状总和抛物线(2)完全相同,它的顶点(0 , k,-
2b总是在抛物线(1)上。
当k从-∞到+∞时,变动的抛物线(4)就产生双曲抛物面。因此,双曲抛物面可以看成是由两条位于相互垂直的平面上的有公共对称轴及顶点名单开口方向相反的抛物线。其中一条抛物线使其顶点始终沿着另一条抛物线作平行移动产生的。
椭圆抛物面的大致在XY面的上侧。即Z≥0,向上无限伸展。椭圆抛物面和双曲抛物面的标准方程可以统一为
Px2+Qy2=2RZ (P、Q、R≠0)
当Q、P同号时,表示椭圆抛物面;当Q、P异好号时,表示双曲抛物面。[2]
1、1、1 Matlab下作抛物面图象及程序
绘制一个抛物面Z=(X2+Y2)/30。 程序:
>>Z=0:20;
>>R=(30*Z).^(1/2); >>[X.Y.Z]=cylinder(R,40); >>mesh(X.Y.Z)
图形结果如右图:
其中[X.Y.Z]=cylinder(R,40)为椭圆抛物面的命令函数。返回一母向量r,高度h为I的旋转曲面x,y,z轴的坐标值。旋转轴为Z轴,旋转曲面的圆周有指定的n个距离的点,而mesh是画出图象的命令。其图象是由空间网格线绘制而成。
下面再绘制双曲抛物面Z=程序:
>>x=-8:8; >>y=-8:8;
X422Y522
>>[X,Y]=meshgrid(x,y); >>Z=(X.^2/4^2-Y.^2/5^2); >>meshz(X,Y,Z) 图形结果如下图:
其中[X,Y]=meshgrid(x,y)功能是生成二元函数Z=f(x,y)中x-y平面上的矩形定义域中的数据点矩阵X和Y。在次程序中输入向量x为x-y平面上x轴的值,向量y为x-y轴的值,输出矩阵X为x-y平面数据点的横坐标值,输出矩阵Y为x-y平面上数据点的纵坐标值,而meshZ(x.y.z)则是曲面周围可绘制类似“幕条”的线条。[3]
1、1、2 命令函数变换及图象异同
首先介绍几种命令函数:
1、mesh(x.y.z.c)是自变量格点矩阵,Z是格点上的函数矩阵,C是指定的各点颜色的矩阵。更简单的指令mesh(x.y.z)和meshZ。[4]
例如:绘制椭圆抛物面Z程序:>>x=-8:8;
>>y=-8:8;
X222Y322。
>>[X,Y]=meshgrid(x,y); >>Z=(X.^2/2^2+Y.^2/3^2); >>mesh (X,Y,Z) 图象结果如下图:
图形结果显示为空间网格线图,与mesh有同样功能的指令有:
meshZ 除了mesh的功能外,还在曲面周围绘制出类似于“幕布”线条。 绘制程序及图象结果如下: >>x=-8:8;
>>y=-8:8;
>>[X,Y]=meshgrid(x,y); >>Z=(X.^2/2^2+Y.^2/3^2); >>meshz(X,Y,Z)
meshC 在完成了mesh的功能外,在曲面的下方绘制出等高线。 绘制程序及图象结果如下: >>x=-8:8;
>>y=-8:8;
>>[X,Y]=meshgrid(x,y); >>Z=(X.^2/2^2+Y.^2/3^2); >>meshc(X,Y,Z)
以上三种指令函数绘制出空间网格线。[4]下面介绍几种绘制空间曲面指令:
x例如:绘制双曲抛物面,Z=
22y322
2程序:>>x=-8:8;
>>y=-8:8;
>>[X,Y]=meshgrid(x,y); >>Z=(X.^2/2^2+Y.^2/3^2); >>meshc(X,Y,Z) 图象结果如下:
绘制出的图形结果为空间曲面图,且为彩色的。指令函数surf(x.y.z.c)也是
绘制空间曲面的指令。其中c是指定各点颜色的矩阵,决定图形生成的颜色。C缺省时,数据z同时为曲面高度,也是颜色数据。
例如:绘制带有等高线的理想气体状态方程曲面。Pv=nRT n=3mol 程序:>>R=8.31
>>n=3 >>p=(1:20) >>v=(1:20)
>>[p,v]=meshgrid(p,v) >>T=p.*v/n/R >>surf(p,v,T)
图形结果如图所示。画出带有 等高线的三维曲面图。[5]
以上几种程序及图象可知,surf同mesh命令用法和使用格式相同,不同之处在于绘制的图形是一个彩色曲面而不 是彩色网格。
图象生成后,为了更好的看清楚整个立体,往往需要选择一个良好的视角,确定观察点的指令有两个:
View([x,y,z]) (x,y,z)为观察点的直角坐标
View([aZ,el]) (aZ,el)为观察点的方位角和俯视角[6]
例如:在直角坐标下,绘制带有等高线的理想气体状态方程曲面。Pv=nRT
n=2mol. 程序:>>R=8.31
>>n=2 >>p=(1:20) >>v=(1:20)
>>[p,v]=meshgrid(p,v) >>T=p.*v/n/R >>surf(p,v,T) >>view(45,30)
图形结果如上:
图形为带有等高线的曲面图,与上图不同处在于,此图是在直角坐标下(45,30)点观察的结果。
以上几种指令函数是几种常见的matlab中作曲面的函数。在作抛物面图形时,有着非常重要的作用。抛物面的性质比较复杂,难懂。运用matlab程序作其图象,可容易的观察其特点和性质。
例如:用平行截面Z=Z0截双曲抛物面X2-Y2=0.4Z绘制截痕曲线。
程序:
>>c=20;derta=1.8;
>>x=-4:0.4:4;y=x;[x,y]=meshgrid(x,y); >>z=(x.^2-y.^2)./0.4;z0=c*ones(size(x)); >>subplot(2,2,1) >>hold on
>>mesh(x,y,z0),mesh(x,y,z),grid
>>view([-17.5,10.0]),holdoff >>[xx,yy,zz]=choise(x,y,z,z0,derta);
>>subplot(2,2,3)
>>plot3(xx,yy,zz,'r'),grid,view([-17.5,16.0]) >>subplot(2,2,3) >>mesh(x,y,z),hold on >>for k=-c:10:c
>>z0=k*ones(size(x));mesh(x,y,z0) >>end
>>view([-17.5,10.0]),hold >>subplot(2,2,4) >>hold on >>for k=-c:10:c
>>z0=k*ones(size(x));[xx,yy,zz]=choice(x,y,z0,derta);
>>plot3(xx,yy,zz,'r') >>end
>>grid,view([-17.5,16.0]),hold off 图象结果如图:
此程序是来研究抛物面的性质的。抛物面与Z平面的交面,可通过matlab程序清晰可见其相交面。[7]
1、2 椭球面
x椭球面是常见的二次曲面的一种。方程是
22yb22zc221。我们从
a以下几个方面来讨论椭球面的性质和形状。
① 对称性
在方程中用(-X,Y,Z)代替(X,Y,Z)方程不便,说明若点P(X,Y,Z)在曲面上,则P点关于YZ面的对称点P’(-X,Y,Z)也在曲面上,即曲面关于YZ面对称。同样,分别用(X,-Y,Z)和(X,Y,-Z)代替方程中的(X,Y,Z),方程不变。所以,曲面关于ZX面和XY面对称。
用(X,-Y,-Z)代替方程中的(X,Y,Z)方程不变。说明若点(X,Y,Z)在曲面上,则该点关于X轴的对称点(X,-Y,-Z)也在曲面上,即曲面关于X轴对称。同样的,可知曲面关于Y轴,Z轴也对称。
用(-X,-Y,-Z)代替方程中的(X,Y,Z)方程不变,说明若点(X,Y,Z)在曲面上,则该点关于原点对称点(-X,-Y,-Z)也在曲面上,即曲面关于原点对称。
② 范围
因为方程表示三个正数相加等于1,所以有
xa22y≤1,
22z≤1,
22≤1。
bx≤a,
c≤b,
有,
yz≤c.
这说明曲面是在六个平面X=±a,Y=±b,Z=±c所围成的长方体中,也就是
说,椭球面是有界的,它上面的点不能无限的跑到远方去。这是椭球面在二次曲面中最突出的特点。
③ 与各坐标及个坐标面的交线
在方程中令Y=Z=0,可得椭球面与X轴的交点A(0,0,0)和A’(-a,0,0)同样可得椭球面与Y轴的交点B(0,b,0)和B’(0,-b,0)与Z轴的交点C(0,0,c)和C’(0,0,-c).
椭球面与三个坐标面的交线分别为:
y2b2x221 (1)cax0z22x221 (2)cay0z22y221bz0 (3)
它们都是椭圆。
④ 为了进一步了解一个曲面的形状,我们用一组平行平面去截这个曲面,得到一组交线,通过这组平行平面上的截口的形状来分析曲面的大体形状。
用平行于XY面的平面Z=h,
h≤c来截曲面,截口为:
x2a当
2y221hc22 (4)
bzhhhh≤c时,它总是一个椭圆。它的两个半轴分别为:a=122及
c22它的两对顶点为(±a1hc22,0,h)及(0,±b1hc22,h)
b=1c而这两对顶点又分别在XZ面及YZ面的截口椭圆上。
当h由-c变到c时,由(4)所得到的上述这一族位于平行平面上的椭球面。也就是说椭球面是由一个椭圆(4)变动产生的。这个椭圆在变动中始终保持所在平面与XY面平行,且它的两对顶点始终分别在两个定椭圆(2)及(1)上华
东,椭圆面的形象是一个压扁了的旋转椭球面。
椭球面有三个主平面,三条主轴,一个中心,六个顶点。[8]
1、2、1 matlab下绘制椭球面图象
例如:绘制椭球面
222222x2y3z41的图象。
程序:>>X=-4:4;
>>Y=-4:4; >>[X,Y,Z]=sphere; >>M=(X.^2/2^2+Y.^2/3^2+Z.^2/4^2);
>>mesh(X,Y,Z) 图象结果如下:
其中如格式[X,Y,Z]=sphere(n)是生成三维直角坐标系中的单位球体坐标,该单位球体有n×n个面。
1、2、2 坐标变换及图象异同
在二次曲面作图中,坐标的变换可以改变图象的位置。空间点的坐标依赖于坐标系的选取,同一个点在不同的坐标系下有不同的坐标。二次曲面作为空间图形,可看作是具有某种特征性质的点的轨迹,在不同的坐标系下,其方程也不相同。如果能选取适当的坐标系,使二次曲面的方程取最简单的形式。[6]这样即便于识别曲面的类型,讨论它的性质,又可以便于确定其空间位置绘制出它的图形。
在matlab下,坐标分别为直角坐标、球坐标、柱坐标,其相互转换关系式为:
[X,Y,Z]=pol2cart(taeta,r,z) 将三维柱坐标转换为直角坐标 [taeta,r,z]=cart2pol(X,Y,Z) 将三维直角坐标转换为柱坐标 [X,Y,Z]=sph2cart(taeta,phi,r) 将三维球坐标转换为直角坐标 [taeta,phi,r]=cart2sph(X,Y,Z) 将三维直角坐标转换为球坐标
这几种坐标转换可简化二次曲面作图,使图象更清晰,易懂。
x例如:绘制椭球面
322y422z5221的图象
程序: >> X=-4:4; >>Y=-4:4; >>[X,Y,Z]=sphere;
>>M=(X.^2/3^2+Y.^2/4^2+Z.^2/5^2); >>mesh(X,Y,Z) 图象结果如图:
若此程序改作在直角坐标下绘制,那么程序为:
>> X=-4:4;
>>Y=-4:4; >>[X,Y,Z]=sphere;
>>M=(X.^2/3^2+Y.^2/4^2+Z.^2/5^2); >>[X,Y,Z]=sph2cart(taeta,phi,r)
>>mesh(X,Y,Z)
图形结果如下:
若将上程序改为在柱坐标下绘制,那么程序为:
>> X=-4:4; >>Y=-4:4; >>[X,Y,Z]=sphere;
>>M=(X.^2/3^2+Y.^2/4^2+Z.^2/5^2); >>[taeta,r,z]=cart2pol(X,Y,Z) >>mesh(X,Y,Z) 图形结果如下:
以上程序和图象,清晰名了的显示了坐标变换对图象的影响。也就是说,只有选择适当的坐标系才能更直接的识别图象的类型,进而研究它的性质。[7]
1、3 柱面
如果方程F(x,y)=0在xoy平面上表示一条曲线,则它在空间表示准线是直母线平行于Z轴的柱面。
类似的,有如果方程F(x,y,z)=0中变量,x或y不出现,则F(x,y,z)=0是直母线平行于X轴(或Y)的柱面
例如方程:
在空间表示直母线平行于坐标轴的柱面,前两柱面的直母线平行于Z轴,后一柱面的之母线平行于Y轴,它们分别是:椭圆柱面、抛物柱面、双曲柱面。下面我们来研究椭圆柱面的几何画法。先作空间椭圆,然后在X=0上做矩形,且平行Z轴与Y轴,然后,在矩形内作内切椭圆,然后作X轴上点(a2,0,0)作Y轴,Z轴的平行线,作另一椭圆。用平行于X轴的线段连接这两个平行椭圆上的对应点。再将被前面的曲面挡住的线画虚线,得到椭圆柱面。
以上以椭圆柱面为例,研究了柱面的几何画法。下面我们利用matlab计算机作图程序作柱面图象。[8]
1、3、1 matlab下柱面作图程序及图象
例如:绘制圆柱面x2+y2=9的图象 程序:error(nargchk(0,3,nargin)); [cax,args,nargs] = axescheck(varargin{:}); n = 90; r = [3 3]';
if nargs > 0, r = args{1}; end if nargs > 1, n = args{2}; end r = r(:); % Make sure r is a vector.
m = length(r); if m==1, r = [r;r]; m = 2; end theta = (0:n)/n*2*pi;
sintheta = sin(theta); sintheta(n+1) = 0;
x = r * cos(theta); y = r * sintheta;
z = (0:m-1)'/(m-1) * ones(1,n+1);
if nargout == 0 cax = newplot(cax); surf(x,y,z,'parent',cax) else
xx = x; yy = y; zz = z; end 图
象
结
果
如
下
10.80.60.40.2042402-20-2-4-4
:
又如绘制侧轮廓为2的圆柱面,其程序为: >>a=0:1/10:2; >>[x,y,z]=cylinder(2); >>surf(x,y,z); 输出如图:
例如:绘制抛柱面Z2=2X的图象
程序: >>x=-8:8; >>y=-8:8;
>>[X,Y]=meshgrid(x,y); >>Z=sqrt(2*x); >>meshc(X,Y,Z) 图象结果如下:
1、3、2 其它二次曲面与柱面结合图象
例如:绘制锥面 与抛物柱面 相交而成的曲面
分析:此程序是锥面和柱面的集合,具有一行难度。我们将一步
步分析作图步骤和程序。
一、曲线就是圆柱面 与锥面 的交线,所以我们首先作出这条曲
面的程序和图象。 >>x=-1:0.06:1; >>y=x;
>>[x,y]=meshgrid(x,y);
>>hold on,view([-9.02,12.83,6.92]) >>y=sqrt(2.*x-x.^2); >>plot (x,y,z)
下一步我们将添加mesh指令并适当调整变量x的范围,如下程序可以做
出抛物柱面。 >>x=-1.2:0.06:2.1; >>y=x;
>>[x,y]=meshgrid(x,y); >>z=sqrt(2.*x);
>>hold on,view([-9.02,12.83,6.92]) >>mesh(x,y,z)
图象结果如下:
这个程序和图象是比较复杂的,在这里不做具体说明。[9]
第2章 几种特殊二次曲面的绘制及应用
曲面的应用特别广泛:工程、地理、教学等等。在汽车飞机等大型机器制造设计中,就需要大量的曲面以描述起外姓。同样的,曲面的生成与表示也是计算机图形学的一个重要内容。它是描述物体外姓,建立对象,数学模型的有力工具。在教学中,曲面是较具难度的一个知识点,主要原因是:方法种类多,三维理解过于抽象。本章我们将利用matlab程序从几个方面来探究二次曲面的绘制及应用。[10]
2、1 马鞍面
由第一章我们知道马鞍面是比较复杂的双曲抛物面。传统的空间解析几何对于二次曲面的教学,大多是以教师按教学大纲的要求,通过二次曲面的方程,利用代数的方法,讨论它的形状。这种教学方法的优点是理论推导严密;缺点是缺乏几何直观性。学生很难通过方程想象出它的图形。下面我们将利用matlab来弥补这一不足,本节给出一个实验来模拟马鞍面教学。
2、1、1 教学目的
使用matlab软件的一些基本功能来分析和观察马鞍面的形状,观察以下几个现象:
1、当a>0时,平面Z=a与马鞍面Z=x2-3y2的交线是什么曲线? 2、当a<0时,平面Z=a与马鞍面Z=x2-3y2的交线是什么曲线? 3、平面y=a与马鞍面Z= Z=x2-3y2的交线是什么曲线?
2、1、2 教学过程
下面分别给出平面Z=a及y=a与马鞍面的交线的演示程序。 1、平面Z=a与马鞍面Z=x2-3y2的交线的演示程序。 >>[x,y]=meshgrid(-10:.2:10); >>z1=(x.^2-3*y.^2)+eps; >>a=input(‘a=(-50>z2=a*ones(size(x)); >>subplot(1,2,1),mesh(x,y,z1);hold on; >>mesh(x,y,z2); >>xlabel(‘x轴’);ylabel (‘y轴’);zlabel(‘z轴’); >>title(‘z=a与z=x^2-3*y^2的图形); >>v=[-10,10,-10,10,-100,100];axis(v),grid >>colormap(gray),hold off, >>r0=abs(z1-z2)<=1; >>zz=r0.*z2;yy=r0.*y;xx=r0.*x; >>subplot(1,2,2),plot3(xx(r0~=0), yy(r0~=0), zz(r0~=0),’x’); >> xlabel(‘x轴’);ylabel (‘y轴’);zlabel(‘z轴’); >>title(‘z=a与z=x^2-3*y^2的交线); >>axis(v);grid 程序运行结果
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务