maple绘图要点.pdf

上传人:tbuqq 文档编号:5197490 上传时间:2020-02-19 格式:PDF 页数:32 大小:1.77MB
返回 下载 相关 举报
maple绘图要点.pdf_第1页
第1页 / 共32页
maple绘图要点.pdf_第2页
第2页 / 共32页
maple绘图要点.pdf_第3页
第3页 / 共32页
maple绘图要点.pdf_第4页
第4页 / 共32页
maple绘图要点.pdf_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《maple绘图要点.pdf》由会员分享,可在线阅读,更多相关《maple绘图要点.pdf(32页珍藏版)》请在三一文库上搜索。

1、107 Maple 绘图第 六 章 这一章将围绕着Maple 中的绘图功能进 行初步的介绍。本章的介绍将以Windows95 系统中的 Maple V Release 5为例,在其他 版本的 Maple 中,大部分的例子都可以实现。 但是,和各种系统相应,这些绘图功能的输 出是有所不同的。我们把介绍的重点放在各 类函数的使用方法上,对于不同系统下的界 面差异将不作介绍。 本章具体包括以下内容: 单变量函数曲线绘制 参数曲线的绘制 隐函数确定的曲线 根据数据绘制曲线 二维动画的绘制 双变量函数曲面绘制 参数曲面的绘制 隐函数确定的曲面 由数据生成曲面 三维动画的绘制 Maple V Releas

2、e 5 起步与进阶 。108 和别的语言不同,当我们利用Maple 进行二维或者三维绘图时,Maple 可以自动地决定 所需的点数、坐标轴的位置、标尺的数字、图形的颜色等等繁杂的设置,在默认状态下就可 以绘制出令人满意的图形。当然, 你也可以自己设定各种不同的绘图设置,比如更改绘图的 坐标系(以画出极坐标、球坐标、或柱坐标下的图形),或者绘图的点数。 下面,我们就由浅入深地介绍Maple 中的绘图方法。 6.1 二维基本图形绘制 在 Maple中,单变量函数曲线的绘制可以使用函数plot。例如,我们需要绘制函数 )sin()( 3 2 xexf x 在区间 -2,2上的图形,我们可以这样来实现

3、。首先用箭头操作符定 义函数: 然后,调用plot 函数。 键入命令后, 所绘制的图形会立即出现在同一个可执行块中。Maple V Release 5 也支持 把图形单独绘制在一个窗口中,如图6.1 所示,只需要在菜单Option | Plot Display 选择 Window 即可。 一般地,函数plot 的调用格式为plot(f, ab, options)。其中, f 是需要绘制的函数,ab 是自变量的变化范围,options 是可选参数,用它可以控制图形的绘制,我们将在下一节中 详细介绍。除了可以绘制函数的图形外,plot 也可以绘制表达式表示的函数图形,调用格式 为 plot(exp

4、r, x = ab, options)。其中, expr 是表达式(相信读者一定知道表达式和函数间的 区别了),x 是表达式中的自变量,因为表达式中没有自变量的信息(甚至可以是多变量的 表达式),所以必须指定自变量,并用等式形式给出自变量的变化范围。 第六章Maple 绘图 。109 图 6.1 在窗口中绘图 这些基本的绘图功能,Maple 和其他的树脂绘图工具(比如Matlab 、Origin 等)并没有 什么区别。但是,作为符号代数系统,Maple 具有其更为强大的功能,它甚至可以在无穷区 间上绘图。 例如,我们希望在整个实数轴上绘制上面的函数f 的图形: 显然,现在的x 轴并不具有均匀的

5、标尺(否则我们将什么也看不到)。为了显示所有实 数轴上的图形,Maple 作了一个映射,它将整个实数轴映射到(-1, 1)区间上。这个映射可以 近似地表示为) 2 arctan( 2x x。我们可以用Maple 在整个实数域上绘制这个映射函数, 得到的结果接近于一条直线,可见,Maple 绘图中使用的从( , ) 到(-1,1)的映射和这 个表达式相近。 在 Maple 中,可以同时绘制几个图形,也就是把几个函数图形绘制在同一张图上。对于 每一个不同的函数或表达式,Maple 会自动地选择一种不同的颜色来绘制图形,以加以区别。 绘制多个函数的plot 的用法和前面的相近,只是第一个参数是一个函

6、数或表达式的集合(用 一对花括弧“ ”括起来)。 Maple V Release 5 起步与进阶 。110 Maple 的绘图不仅可以在屏幕上进行,还可以输出到不同的设备。例如,可以输出到打 印机文件PostScript 格式的描述文件。它可以用来直接打印,也可以插入到其他支持 PostScript 格式的程序中去,例如TEX。 用以上的形式调用interface 函数后, 图形便会以PostScript 格式输出到文件名为plotfile 的文件中去了。如果需要将图形输出重新定向为默认的格式,可以用plotfile = default 或者 plotfile = inline为参数调用int

7、erface。 6.2 plot 函数的可选参数 在默认情况下,Maple 的 plot 函数会自动地选择各种绘图参数。例如,它可以自动选择 绘图的区间,采样点数,标尺的刻度等等。Maple 选择这些参数的依据是,使最常用的图形 绘制尽可能简单易行,而且具有可以认可的质量。当然,为了绘制某些特殊要求的图形,我 们也可以人为地确定这些绘图参数。 第六章Maple 绘图 。111 我们已经知道,对于单变量函数曲线的绘制,plot 的第二个参数是横坐标(自变量)的 取值范围; 如果要限制纵坐标的取值范围,就需要在调用plot 时将它作为第三个参数。在上 面这个例子中,我们在自变量取值区间(-6, 6

8、)上绘制表达式 2 2 sin x x 的图像,而且设定了纵坐 标的范围 0, 1,这样,图像在0, 1 以外的部分就被切除了。 通常情况下这一参数好像并没有必要,但有的时候,函数在我们关心的区域内有奇点, 或者有远大于其他地方函数值的极值点。这时在使用默认的参数绘图,就会得到一些具有 “尖 峰”的函数图形,而其他地方的函数特征都被掩盖掉了。比如我们要绘制正切函数的图像, 在默认情况下得到的曲线是这样的: 为了得到可以恰当地反映函数特征的曲线,这时就必须限制纵坐标的显示区间。比如对 于正切函数的图像,我们在-10, 10 的纵坐标范围中对其进行绘制,得到的曲线就比较令人 满意: 关于绘图的比例

9、问题,默认情况下,Maple 自动调整横纵坐标的比例,使横纵坐标上的 最值都可以被正常显示(如果函数在给定区间里有最值的话)。这样,横纵坐标的显示比例 往往是不相同的,如果要使横纵坐标以相同的比例显示,可以加入控制参数scaling = constrained。 Maple V Release 5 起步与进阶 。112 如果所要绘制的函数具有单变量的子程序形式,那么第二个参数可以略写为自变量的取 值范围,而无须指定自变量名称,如前例中正切函数的曲线绘制所示。这样,横纵坐标上都 只有刻度,而没有名称。如果在限制取值范围的同时,还指定了自变量和函数名称,那么坐 标轴上也将分别标上它们的名称。而且,

10、 在 plot 中,我们还可以指定图像的标题,只需要在 plot 中加入可选参数title = 标题,当然标题当中一般都含有特殊字符,例如空格、 括弧等等, 所以需要用反向撇号“ ”将它括起来(也可以用一对双引号括起来,作为字符串)。 在上面的例子中,我们还使用了两个附加参数,xtickmarks=8 和 ytickmarks=4 ,它们分 别指定了横、纵坐标上刻度值的个数。 上面这种绘图方法,一气呵成,把所有要加的东西都一次加上,这样当然方便;但有时 我们需要逐步的在图像中加入各种元素,然后一同显示。 这时, 我们可以把图形对象赋值给 一个变量(这个变量的类型是函数型的)。把我们需要的图形元

11、素依次赋给不同的变量,然 后调用 plots 工具包中的函数display 就可以将它们显示在一张图上了。我们还可以用textplot 在图形的任意位置进行标注。 第六章Maple 绘图 。113 plotstextplot 函数的第一个参数是一个有序表的集合,其中每个有序表表示一个标注。 有序表由三个元素组成,前两个表示标注点的坐标,第三个是需要标注的数值、变量或者字 符串(不管什么类型, 输出时都会转换成为字符串输出)。plotstextplot 的第二个参数align = t 是可选参数,它确定标注的字符串相对于给定坐标的对齐方式,其中t 可以是 BELOW , RIGHT ,ABOVE

12、 ,LEFT 中的一个或几个的集合,在默认情况下,plotstextplot 将字符串的 中心位置和给定坐标对齐。plotsdisplay 函数可以用来显示图形对象,它可以显示一个图形 或者几个图形的集合。 在绘图时, Maple 首先计算曲线上的一些点的坐标(点的个数可以用参数“numpoints = 点数”人为地设定) ,然后,在默认情况下,Maple 用直线段把这些离散的点连成一条曲线。 但有时需要绘制离散的点构成的图形,可以设置参数style = point (默认情况下为style = line) 。 对于多边形, 还可以将绘图方式style 设成为 patch,这时绘制的是经过填充

13、的多边形。 在用 point 方式绘制曲线时,Maple 会用一些以函数点为圆心的小圆圈来绘图,例如: 除了绘制函数或者表达式的曲线外,plot 还可以用于对给定的离散数据绘图,这时同样 Maple V Release 5 起步与进阶 。114 也可以选择point 的绘图方式。例如,我们要在图上绘制前9 个素数,可以把这9 个素数及 其序号组成的有序表作为第一个参数传给plot: 用已知数据绘图往往用在图形不能够显式地写成解析表达式的情况,比如在下面这个例 子中,我们需要绘制以1.0 为初值对余弦函数进行迭代的图形。首先,需要生成一个点的有 序表: 1.0, cos(1.0), cos(1.

14、0), cos(1.0), cos(1.0), cos(cos(1.0), cos(cos(1.0), cos(cos(1.0), cos(cos(1.0), cos(cos(cos(1.0), 。 这样的有序表,最简便的生成方法是利用函数符合操作符: 这里, trunc 函数是向下取整函数,它是用来获得cos的复合次数的;而cos( num ) 则表示 cos函数复合运算num 次。 得到了这些数据对之后,就可以绘制图形了,为了使整个迭代过程更加清楚,我们同时 还要绘制两个函数的图形y = x 和 y = cos(x)。我们将它们分别保存在不同的变量中。 由于图形是分别绘制的,所以Maple

15、 不对它们取不同的颜色;为了加以区别,我们用 第六章Maple 绘图 。115 colour 参数设置绘图的颜色。 Maple 中对于常用的颜色都有相应的名称,请参考再线帮助plot, colour 。 最后,我们用plots 工具包中的函数display 绘制这些图形,并且加上标题。 6.3 二维图形对象的结构 为了能清楚地知道Maple 绘图的可靠性, 我们必须了解它的绘图机制。Maple 中的绘图 是分两步走的:其一,计算出所有的绘图点,再将它存入到图形对象PLOT 中;其二, 在屏幕或者其他输出设备中进行图形的绘制。在这一小节中, 我们把介绍的重点放在第一步 中。 Maple 的图形对

16、象实际上是一个函数调用,plot 函数实际上就是生成了一个这样的函数 PLOT。 PLOT 函数有多个参数,分别确定了绘图所需的点的坐标,绘图的方式,坐标 轴的模式等等。我们也可以直接调用PLOT 函数生成图形对象,例如, 可以画一个一致三个 顶点的三角形: 我们提供了该函数的部分参数CURVES( )和 AXESSTYLE( ),分别表示曲线的 点,坐标轴的模式。其余的参数,例如COLOUR (绘图的颜色) 、 VIEW (绘图范围) 、 AXESTICKS (标尺刻度)等,Maple 都自动选择了默认的情况。 Maple V Release 5 起步与进阶 。116 那用 plot 函数所

17、生成的图形对象是不是和它有所不同呢?作为例子,我们来看一看函数 xxf22)(的图像在Maple 中的结构。 (由于点的数据过多,在这里予以省略) 不难发现,除了特殊的绘图要求需要有较多参数外,这个数据结构和前面的是相同的。 在 Maple 中只要再次输入它,就可以得到它所表示的图形: 调用绘图函数plot 时,Maple 首先对表达式或函数求值,然后在采样点上求它的数值结 果。为了提高运算速度,Maple 在这里使用的是硬件浮点(详见第一章)。 为了提高图形的质量,Maple 在选择采样点的时候采用的是逐步求精的方法。首先,计 算绘图区间中几乎等距的49 个采样点上的函数值;然后,Maple

18、 会检验这些点之间的连续 程度, 检验时用的算法很好理解,想象这些点依次用直线段相连,相邻的两条直线段之间会 形成一定的夹角,如果夹角过大,也就是在这里的连续性不好,Maple 会适当增加附近的采 样点数,以提高图形的质量。但作为一个成熟的计算机软件,Maple 决不会无限制地把采样 点数增加下去。图形的最高分辨率由选项resolution 确定, resolution 的默认值是200。也就 是说,默认情况下,采样点数总是介于49200 之间。 实际上,在上一个例子的图形中,Maple 已经在局部增加了采样点数。这在完整的图形 上几乎看不出来。但是可以利用plots 工具包中的函数replo

19、t 将图形在局部放大,就可以清 楚地看到这一点图形的许多个采样点之间间距不同(如下图所示),这就是利用了上面 的逐步求精算法的结果。 第六章Maple 绘图 。117 但有时,对于一些局部连续性不是太好的函数,Maple 自动取的采样点仍不能使我们满 意。例如,表达式 x x 5cos1 在区间 ( -5, 5 )上的图像: 这时, 人为地增加采样点数,可以提高图形的质量。采样点数可以在plot 函数中用参数 “numpoints = 预定的采样点数”给出。 Maple V Release 5 起步与进阶 。118 前面我们所作的绘图参数的改变,都是对于单个图形对象而言的,如果需要改变默认的

20、绘图参数,可以调用函数setoptions。 6.4 特殊二维图形的绘制 6.4.1参数曲线的绘制 在 Maple 中,对于笛卡尔系下的参数曲线 bta tgy tfx )( )( , 调用 plot 函数的标准格式是plot( f(t), g(t), t = ab , options ),其中 ab是绘图的范围, options 是可选参数,它的可选参数和绘制一般平面图形式相同的。 作为例子,我们来画一条平面螺线: 当所需绘制的图形是用函数而非表达式给定时,就不能再给定它的自变量了,例如: 第六章Maple 绘图 。119 6.4.2极坐标下的绘图 Maple 的极坐标绘图和二维参数曲线的绘

21、制极其相似,函数调用格式相同,所不同的是 需要增加一个控制参数coords = polar, 极坐标绘图的一般格式为:plot( r(t), (t), t = t0t1 , coords = polar, options )。其中 r(t)和(t)分别是向径和辐角的函数。例如,我们用它在极坐 标下绘制蜗线(cochleoid) : 绘制极坐标图形,不仅可以通过在plot 中加参数的方法实现,还可以直接调用plots 工 具包中的函数polarplot ,它的调用格式和输出结果都是和上面的调用相同的。作为例子,我 们来看一个有趣的图形,它看起来有点像Maple 的商标图案一片枫叶。 Maple

22、V Release 5 起步与进阶 。120 6.4.3平面代数曲线的绘制 在 Maple 的 plots 工具包中,还有一个函数implicitplot ,利用它可以绘制用一个二元方 程隐式定义的二维平面曲线。例如: 在 Maple 内部,这样的隐函数f(x, y) = 0 的图形被视为一个空间曲面(由方程所定义的 二维函数f(x, y) )和 z 平面的交线,函数implicitplot的算法就是基于这一点的。由于求交算 法会用到二维曲面的梯度,所以这一算法在函数的奇点附近,也就是0 y f x f 的点附近, 会遇到无法逾越的障碍。最典型的一个例子是由方程: 0232 23244 yyy

23、xyx 所定义的曲线,它有两个奇点,(0, 0)和(0, 1)。即使试用很高的分辨率(用grid 参数设 置) ,implicitplot仍然不能正确地画出它的图形,而且计算所需的时间和资源是令人无法忍 受的。 第六章Maple 绘图 。121 这个算例是在Pentium 200 上进行的, 它运行了将近两分钟,还占据了20M 的内存 (可 以在窗口的状态条上看出)。然而,得到的图形还是不理想,尤其在原点附近。 所以,我们不能过分依赖于Maple 的 implicitplot ;如果可以将表达式写成显式的或者参 数形式的, 就不要直接用隐式表达式画图。例如, 上面这个例子就可以在极坐标中写成为

24、显 式的表达式。 有了显式表达式,就可以用polarplot 在极坐标中绘制图形了: Maple V Release 5 起步与进阶 。122 相比之下,这个图形比前面的要好得多,而且绘图速度也有极大的提高。 6.4.4对数坐标下的绘图 在 Maple 的 plots 工具包中, 还有对数坐标下的绘图函数logplot 和双对数坐标下的绘图 函数 loglogplot 。它们的用法都和plot 类似,也都可以用于绘制表达式,函数和离散数据。 在这里,就不一一详细介绍了,以一个简单的例子来说明它们的使用。 对数坐标绘图往往用在数据处理上,因为在对数坐标上可以看出函数的指数关系。作为 例子,我们用

25、统计工具包中的随机函数random 生成一组具有正态扰动的数据。 然后,用 logplot 来绘制图形: 双对数坐标绘图函数loglogplot 的使用也与此类似,这里不再赘述。 第六章Maple 绘图 。123 6.4.5共形映射的图形绘制 Maple 的绘图工具包plots 中还有一个共形映射(保角变换,conformal mapping)的绘 图函数conformal 。它可以绘制复平面上的一个矩形区域经过给定变换后的图形,还可以在 中间绘制网格。 作为例子,我们来看一个常用的变换e z,它把复平面上一个矩形区域映射成一个半环 形的区域。可以用conformal 获得变换后的网格图形:

26、6.5 二维绘图的注意事项 6.5.1图形走样 前面曾经说过,Maple 在绘图是采用的是逐步求精的算法,逐渐增加采样点数。但它仅 仅在采样点明显不足时也就是图形不连续时才增加采样点数。这样, 有时难免会损失绘 图的局部精度。 因为根据采样定理,采样率必须高于最高频率的两倍,否则会发生频率混淆。 而如果 Maple 第一次采样就低于最高频率,而且因为频率混淆是图形呈现出虚假的“连续”, 这时走样就难于避免了。 例如,我们用默认采样点数绘制x + sin(2 x)在区间 (0, 50)上的图形,就会损失大部分 的局部细节: Maple V Release 5 起步与进阶 。124 当然, 这里我

27、们知道图形的本来面目,所以发生了走样可以察觉;但有时并也不清楚所 绘制图形的特征,这时就需要格外小心,必要时可以适当增加采样点数(用numpoints 作为 附加参数)。 6.5.2常见的错误 对于用 plot(f(x), x = x min x max)形式调用的函数f 的图形绘制, Maple 首先把 f(x) 化成 为 x 的表达式,然后才对其进行数值计算。在一般情况下,这样的调用是不会有问题的,但 如果 f 是一个分段函数, 或者数值函数, 这样的调用就会发生问题。例如下面这个分段函数: 因为函数中有分支结构存在,Maple 不能把它化成为符号表达式,所以无法继续进行下 去。解决这个问

28、题的方法之一是在它外面加上单引号延迟它的求值: 不过,对于单变量函数,最方便的方法还是用函数名的直接调用:plot(f, x min x max)。 第六章Maple 绘图 。125 6.6 基本三维图形的绘制 在 Maple 中,绘制由二元函数确定的三维空间中的曲面,和绘制一元函数的图形同样方 便,只需要调用plot3d,并且确定变量的范围就可以了。例如,绘制曲面cos(x, y)在-3x3 , -3y3 中的部分,可以这样调用plot3d : 上面的命令是以下的标准调用格式的一个例子。一般地,对于二元函数或者表达式f(x, y),绘制它所确定的曲面,plot3d 的调用格式如下: plot

29、3d( f(x, y), x = a b, y = c d, options ); 其中, a b 和 c d 分别是自变量x 和 y 的绘图取值范围,而 options 是可选参数, 它指 定绘图的选项,对它的详细介绍将在下一节中进行。 和 plot 一样, plot3d 也有函数的调用形式。对于函数f 确定的曲面,标准调用形式为: plot3d( f, a b, c d, options ); 下面,我们再用函数形式的调用绘制前面的图形,而且在调用时提供了一些绘图参数: Maple V Release 5 起步与进阶 。126 6.7 三维绘图的选项 如同二维绘图一样,三维绘图也有许多的选

30、项,使用户能够自定输出图形的形式。所有 这些选项, 都可以通过在plot3d 中附加绘图参数实现。在 Maple V Release 5 for Windows 中, 也可以用鼠标选中绘制好的图形,然后在窗口的菜单中相应的选项中进行改动;在图形上单 击鼠标右键弹出的菜单中也可作相同的改动。 在这一节中,我们将对于常用的绘图选项分别加以介绍。 6.7.1style 选项 style 选项决定着图形的样式,可以在函数调用中用“style = 样式名称”指定,也可以 在菜单 Style 中选择相应的样式。对于三维绘图,默认的样式是PATCH ,也就是经过填充后 的曲面图形。 对于三维曲面, 它表现为

31、有一些四边形的小面片组成的近似曲面。对于其他的 绘图样式,我们列表加以说明: 表 6.1 三维图形的样式 样式名称对应的菜单项对应的样式 PATCH Patch 填充后的面片 PATCHNOG RID Patch w/o gird 无线框的填充面图 PATCHCONTOUR Patch and contour 带等高线的填充面图 POINT Point 离散点图 WIREFRAM E 或 LINE Wireframe 线框图 HIDDEN Hidden line 消隐后的线框图 CONTOUR Contour 等高线图 在菜单 Style 下, 还可以设置点、 线的样式,线宽, 和网格形状,

32、分别对应着菜单项Symbol, Line Style ,Line Width ,Grid Style 。其中,点的样式和线的样式分别在绘制点图和线图时才 会起作用。 6.7.2着色选项 在 Maple 的曲面图形中, 着色方式可以用 “shading = 着色方式” 在调用 plot3d 时加入; 对于已经绘制好的图形,也可以在菜单Color 中选择。着色方式的含义,及对应的菜单项请 见下表: 表 6.2 三维图形的着色方式 着色方式对应的菜单项方式的具体含义 XYZXYZ 对 X + Y + Z 相等的点采用相同的色彩 第六章Maple 绘图 。127 XYXY 对 X + Y 相等的点采用

33、相同的色彩 Z Z 根据高度( Z)不同着色(红蓝色) ZGREYSC ALE Z (Grayscale) 根据高度( Z)用灰度着色 ZHUEZ (Hue) 根据高度( Z)用全彩色着色 NONENo Coloring 不着色 注: shading = NONE 和 style = PATCH 联合使用可以生成单色的线框图。 6.7.3坐标轴选项 使用 axes选项或者菜单Axes 可以确定绘图时坐标轴的绘制方式。Maple 中有四种坐标 轴绘制方式: BOXED ,NORMAL ,FRAME ,NONE 。对于三维图形, 默认的选项是NONE , 也就是不绘制坐标轴。BOXED是绘制框式的

34、坐标轴,将图形绘制在一个立方体框中; NORMAL是通常我们在数学中使用的坐标轴,它绘制于图形的中部,接近原点的地方,但 对于三维图形,这样的坐标轴会影响图形的显示。一般而言,FRAME 是比较好的选择,它 只在图形边缘绘制坐标轴,完全不影响图形本身。 6.7.4空间朝向和投影 在 Maple 中,三维图形的空间朝向是 用视线和空间笛卡尔坐标系的两个夹角 和 确定的,如图6.2 所示。可以在调用 plot3d 时用选项 orientation = , 设置。 角 控制着图形在水平方向的转动, 而角 控制着图形的俯仰角度,越大, 视线相对于图形就越低。=90(度)时, 就意味着从水平方向观察图形

35、。 图形的朝向控制没有菜单选项,但是 可以利用鼠标直接进行调整。只需在图形 上按住鼠标左键,朝所需转动的方向拖动,图形的朝向就会相应地改变,操作十分方便。 6.7.5透视投影 三维空间的图形,要显示在平面上,必须采用一定的投影方式。在 Maple 中,我们可以 用绘图选项projection 确定图形的投影方式。Projection 必须设定成一个介于0 和 1 之间的数 值,数值的大小表示视点距离物体的远近,0 表示非常贴近被观察物体,绘图的效果类似于 鱼眼镜头的摄影效果,透视效果非常明显;1 表示距离被观察物体无穷远,也就是平行投影, 没有透视效果。Maple 中有三个预设的投影效果FIS

36、HEYE , NORMAL , ORTHOGONAL , 分别对应着取0,0.5,1 的情况。在菜单Projection 中也有相应的选项No Perspective(无透 视) ,Near Perspective(近距透视) ,Medium Perspective (中距透视) ,Far Perspective(远透 z 视线 0 y x 图 6.1 空间朝向的确定 Maple V Release 5 起步与进阶 。128 视)对应着不同的投影方式。 为了体会不同投影方式的效果,我们来看同一个曲面在不同透视距离时的图形(注意图 形朝向也就是视角并未发生改变): (a)无透视( No Pers

37、pective)(b)近距透视( Near Perspective) 第六章Maple 绘图 。129 (c)中距透视( Medium Perspective)(d)远透视( Far Perspective) 图 6.2 曲面的不同透视效果 6.7.6网格大小 和二维绘图不同, 在三维绘图中Maple 没有相应的逐步求精采样算法,采样点数或者说 网格数是确定的。默认情况下,Maple 采用 25 25 的网格绘制曲面。如果需要人为加以限 制,可以用grid = m, n 在绘图时确定网格数为mn,也就是在x 方向分为m等分, y 方向 分为 n 等分。 和前面所讲的选项不同,网格划分时必须在绘

38、图之前确定的选项。也就是说, 图形一旦 绘制完成, 这一选项就无法再改动,否则必须重新计算;而前面介绍的选项都是图形的外观 选项,无需改动图形的数据点。这也就是网格数没有对应的菜单选项的原因。 6.7.7观察区域 和二维图形一样,在 Maple 中,不仅可以设置绘图的自变量变化范围,还可以设置观察 的区域, 也就是输出图形的区域。可以只设置z 方向的范围 (另两个方向的范围和自变量的 变化范围是相同的) ,当然也可以设置三个方向的范围。设置观察区域的范围需要在绘图时 在 plot3d 中加入可选参数,加参数的格式可以使下面两种中的任何一种: view = z min z max view =

39、x min x max, y min y max, z min z max 6.7.8光照模型 为了使所绘制的三维图形具有立体感,仅仅使用着色是不够的,采用一定的光照模型可 以极大地增强图形的表现效果。在Maple 中用 plot3d 等函数绘制三维图形的时候,可以用 light = , , r, g, b 设置光源。其中和 是光源的方位,定义和图形朝向中的视线角度定义 相同, r、g、b 是设置光源的颜色的,分别表示光源的红、绿、篮色分量,它们在01 之间 取值。 但是, 这样定义光源的位置和属性不十分方便,往往经过多次的调整,还打不到满意的 效果。 Maple 中预设了几种光照模型,我们可

40、以用lightmodel选项加以设置,预设的值有 light1 ,light2 ,light3 ,light4 四种,默认的情况是none,表示不使用光照模型。这些光照模 型可以通过菜单Color 中直接予以选择。下图所示是对前面的例子采用光照模型light4 后的 效果。 Maple V Release 5 起步与进阶 。130 图 6.3 光照模型的使用 在这一节中, 我们介绍了三维绘图中的常用选项。其他还有一些不常用的选项,这里不 再一一介绍,如果需要,可以察看Maple 的在线帮助plot3d, options。我们介绍的方法都是 针对单个图形而言的,如果需要改动系统的默认绘图选项,可

41、以调用函数setoptions3d 进行 设置。 6.8 三维图形对象的结构 和二维图形一样,Maple 绘制三维图形的过程也可以分为两步。其一,Maple 计算各个 网格点上的函数值,并将它们和绘图参数一起存入三维图形对象PLOT3D 中;第二步, Maple 将 PLOT3D 对象绘制到屏幕或其他设备上。先来看一个简单的例子: 第六章Maple 绘图 。131 有了前一节中绘图选项的知识,相信读者不难理解上面例子中图形对象参数的意义。这 是一个以点( 1,1,1) , (-1,-1,1) , (-1,1,-1) , (1,-1,-1)为顶点的四面体,以线框 样式绘图,坐标轴采用框式的,观察

42、方向为(30 ,60 ) 。 用 Maple 三维绘图函数plot3d 得到的三维图形对象也具有这样的形式。只不过如果采 用矩形网格,那么PLOT3D 中的第一个数据结构将不再是POLYGONS ,而是一个形式类似 于矩阵的数据结构GRID 。例如,我们用默认的矩形网格绘制二元函数f(x, y) = x y 2确定的 空间曲面: 有了这些数据点,Maple 下一步就可以用线性插值的方法绘制整个曲面了。 6.9 特殊三维图形的绘制 在本章第四节中,已经介绍了一些特殊的二维图形的绘制。同样,Maple 也提供了一些 特殊三维图形的绘制函数。它们中的大部分位于Maple 的绘图工具包plots 中。

43、在这一节中, 我们将对其中一些常用的特殊图形绘制函数作一简单介绍。 6.9.1空间参数曲线和参数曲面 在 Maple 的 plots 工具包中有绘制空间参数曲线的函数spacecurve。它标准的调用格式 为: spacecurve ( L, options )。 Maple V Release 5 起步与进阶 。132 其中,第一个参数L 是一个数据的有序表或者一个表示参数曲线的有序表,表示参数曲 线的有序表必须具有三个或四个元素,前三个分别表示x,y,z 的参数表达式, 最后一个(可 选)为参数的变化范围。options 是绘图的选项。在上面的例子中,我们在同一张图上绘制 了三条参数曲线。

44、 要绘制参数曲面,只需调用plot3d 函数。绘制由参数方程x = f(s, t), y = g(s, t), z = h(s, t) 所确定的曲面,标准的调用格式为:plot3d( f(s, t), g(s, t), h(s, t) , s = a b, t = c d , options )。其中 a b 和 c d 是参数 s 和 t 的取值范围,options 是绘图选项。 作为例子,我们绘制一个螺旋面: 第六章Maple 绘图 。133 6.9.2球坐标和柱坐标下的绘图 Maple 也支持球坐标和柱坐标下的三维图形绘制,它们分别是plots 工具包中的 sphereplot 和 cy

45、linderplot 函数。下面通过两个简单的例子来说明它们的使用: 首先通过一个常函数1 绘制球坐标中的单位球面: 接下来用常函数1/2 在柱坐标下绘制一个圆柱面: 用 plots 中的函数 display3d 可以将多个三维图形对象绘制在同一张图中,这样, 可以通 过多个简单图形合成比较复杂的图形。例如,我们可以这样将上面两个图形合成起来: display3d( %, %, ) 6.9.3管状图形的绘制 在 plots 工具包中有一个函数tubeplot, 它专门用于绘制由一条或者多条空间曲线定义的 管状图形。 作为例子,我们用它绘制一个较为复杂的三维管状图: Maple V Releas

46、e 5 起步与进阶 。134 6.9.4等高线图绘制 等高线图在工程和科学领域的许多方面都有应用,例如二维数据场的可视化等等。Maple 中也提供了绘制等高线图的函数contourplot 。等高线的条数可以在函数调用时用“contour = 条数”设置,默认情况下是20 条。 作为例子,我们来绘制平面上四个同性点电荷(-1,0) , ( 1,0) , (0,1) , (0,-1)产 生的电场的等势线。从物理学中知道,一组在Pi的点电荷q i在 P 点的电势有计算公式: )ln( i ii qUPP 第六章Maple 绘图 。135 平面的数据场还有一个表现方法,就是平面密度图,它用平面上个点

47、的不同灰度或者不 同颜色来表示不同的数值分布。在plots 工具包中,对应的函数是densityplot: 在大多数情况下,将两者结合起来使用会有较好的表现效果。(只需用display 同时显示 两个图形对象就可以将两者绘制在同一张图上。) 6.9.5隐式曲面的绘制 在 Maple 中,可以绘制笛卡尔坐标系下由隐函数确定的曲面,所需的函数是plots 中的 implicitplot3d 。不过,和二维情况下一样,这个函数只能处理非奇异的曲面。 作为例子,我们绘制由隐函数 22 coshyxz 定义的旋转悬链曲面(Catenoid) : Maple V Release 5 起步与进阶 。136

48、6.9.6多面体的绘制 多面体是立体几何中经常研究的对象,Maple 的 plots 工具包中的函数polyhedraplot 可 以直接绘制多种特殊的多面体。 作为例子,用函数polyhedraplot 绘制正十二面体(dodecahedron) 。 函数 polyhedraplot 的第一个参数是多面体的中心坐标,其他大部分选项和plot3d 等三 维绘图函数相同,它所独有的是polytype 选项, 它用来确定所绘制的多面体类型。它可以绘 制的特殊多面体种类多达123 种,这里无法一一列举,读者在需要的时候可以调用函数 polyhedra_supported() 来获得所有它能绘制的所有

49、的多面体名称。 6.10 图形动画的制作 在本章的最后一节中,将介绍 Maple 中的图形动画制作。Maple 中的动画是由一系列的 静止图形(帧)快速地连续播放形成的。最简单的制作二为图形动画的方法是使用plots 工 具包中的函数animate,如图 6.4 所示。 第六章Maple 绘图 。137 刚生成的动画对象是静止的,要播放动画, 只需要在动画对象上单击鼠标右键,在弹出 菜单中选择Animation | Play 就可以播放(也可在选中动画对象后选择主菜单Animation | Play) ,选择 Animation | Next可以单帧播放。 如果需要调整播放的速度,可以选择 Animation | Faster 或 Slower,它们分别可以加快和减慢播放速度。在默认情况下,动画只播放一遍, 选择 Animation | Continuous 可以进行循环播放。 与前面介绍过的大多数绘图函数类似,函数animate 的标准调用格式是: animate ( F(x, t), x

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1