您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 超级画板《动态几何教程》9经典范例
第九篇经典范例本篇将用更多的例子,展示《超级画板》的高级技巧所能做出的效果。我们尽量从比较简单的问题开始。对于每个例子的掌握程度,可以有三个层次。第一个层次,是能用。这是最容易的。只要看看说明,动手做做,就能用了。第二个层次,是会做。这要多花点时间和精力,但也不难。只要对照说明,一步一步地按文件在“对象工作区”中显示的对象性质和顺序来做,有些点的坐标和曲线的方程要复制粘贴一下,就会成功。第三个层次,是明理。这比较困难。特别是有些点的坐标,有些曲线的方程,有些被测量的表达式,这些数学式子是如何设计出来的,不很容易理解。我们没有对这些数学表达式的由来作进一步的说明。数学功底较深厚的读者,花些力量能够理解其中的道理。对多数的读者,只要能用会做就可以了。如果有读者确实对文件中的某些表达式的设计原理有很大的兴趣而又百思不解,不妨在网上提出来讨论(例如在,等网站上)。相信能够得到满意的解答。一线段和圆弧的动态n等分点1.等分线段的程序和函数作出一条线段的等分点,例如3等分点或8等分点,这很容易。最基本的做法,是用尺规作图。《超级画板》可以实现尺规作图,当然能等分线段。如果想快捷一些,可以使用作定比分点的文本作图命令。在文本作图对话框的作点类的函数中可以找到这个函数:DivisionPoint(A,B,r);其中参数A、B是要等分的线段的两端的编号,r是分点所分的两端的长度的比。例如,4个5等分点对应的比值顺次为1/4、2/3、3/2、、4/1。这样,一行命令只能作1个分点。如果要一次作出4个5等分点,可以用for循环语句:for(i=1;i5;i=i+1){DivisionPoint(A,B,i/(5-i));}或while循环语句:i=1;while(i5){DivisionPoint(A,B,i/(5-i));i=i+1;}也可以写成函数便于使用:fd(A,B,n){for(i=1;in;i=i+1){DivisionPoint(A,B,i/(n-i));}}这些程序运行情形见文件“9-1等分线段.zjz”,如图9-1。图9-1注意图中程序工作区是浮动窗口。双击上边框可使它归位,再双击它又成为浮动窗口。2.线段的动态n等分点但是,上面的程序作出的分点,分段数是不能变化的。5等分就是5等分,7等分就是7等分。能不能作一般的n等分点,当n变化时分点的个数也随着变化呢?文件“9-2线段的n等分点.zjz”中的程序和动态图形,就是可以变化的n等分点。如图9-2,拖动n的变量尺改变n的数值,分点的个数会随着改变。图9-2从作图的程序可见,先作出A、B两个自由点,再对两点的坐标进行测量。根据测量的数据,可以写出线段AB的参数方程。使用作参数曲线的函数命令:Function(m000+t*(m002-m000),m001+t*(m003-m001),t,0,1,n+1,);这里将曲线的描点数目设置为n+1,是因为所描的点的含线段的两端点,所以点数比分段数多1。执行作参数曲线的函数命令后,做出的线段上并没有分点。打开参数曲线的属性对话框,在左下部勾选“画点”(参看图5-17);点的大小可选择为2。单击“确定”后,线段上的分点就出现了。作出参数n的变量尺,拖动滑钮改变n的值,分点的数目随之改变。这种方法,n3时分点不出现,要平分线段至少要作出4等分点。3.线段的可选择n等分点上面的作图虽然实现了动态等分,但分点是不可选择的。既不可能从分点出发来作图,也不可能改变某一个分点的大小颜色。文件“9-3线段的可选择n等分点.zjz”实现了线段的可选择的动态n等分点作图。如图9-3。图9-3作出这些分点的关键的函数ndf(p,q,n)的程序为:ndf(p,q,n){for(i=1;i100;i=i+1){DivisionPoint(p,q,sign(n,i)*i/(n-i));}}这个函数中使用了for循环语句,作了99个点,所以最多把线段100等分。但定比分点的分比为sign(n,i)*i/(n-i);这就是说,当i=1,2,…,n-1时(sign(n,i)=1),分比为i/(n-i),作出了n-1个n等分点;当i≥n时(sign(n,i)=0),分比为0,作出的点都和线段的端点A重合。这种把多余的点隐藏起来的技巧,后面将多次使用。这样作出的分点可以被选择,隐藏,改变大小和颜色,可以作为进一步作图的基础。从图9-3看到,可以以分点为心作圆,以分点为端点作线段等等。4.圆弧的动态n等分点一般说来,用尺规作图只可能做出圆弧的某些等分点,例如2等分、4等分点。已经证明,尺规作图三等分任意圆弧是不可能的。当然,计算机作图不受这样的限制。文件“9-4圆弧的n等分点.zjz”,作出了任意一段圆弧的动态n等分点。拖动圆弧端点B、C可以改变圆弧的度数和它在圆上的位置;拖动圆心可以平移圆弧;拖动参数r的变量尺上的滑钮可以改变圆弧的半径;拖动参数n的变量尺上的滑钮可以改变分点的个数。如图9-4。图9-4在程序工作区可以看到作出此动态等分点的主要程序:A=Point(3,2,A);cr=CircleOfRadius(A,r,);B=PointOnConic(cr,B);C=PointOnConic(cr,C);ArcOnCircle(B,C,cr,);MeasureExpress(u001+sign(u000,u001)*2*pi);h=Function(rho=r,u000,m000,n+1,);Translate(h,1,A,);Variable(n,);Variable(r,);程序的前5行顺次为:作自由点A;作以A为心半径为r的圆cr;在圆上取点B、C;作弧BC。圆弧的等分点是这样作出的:在极坐标下作一条和圆弧BC全等且方位相同的曲线,利用曲线属性的“画点”功能,作出曲线上的动态分点,再把曲线和分点平移到圆弧BC的位置,就得到圆弧上的分点了。为了在极坐标中作出和圆弧BC全等且方位相同的曲线,需要确定圆弧BC的两个端点在圆上的位置参数的关系。打开点B和点C的属性对话框,可以看到两点的参数分别为u000和u001。从B到C的圆弧,按超级画板的作图规则,总是沿反时针方向画出来的,而参数u000有时却会大于u001。要使参数的大小关系和圆弧的走向一致,应当有u000u001。为此,当u000u001时,我们给u001加上2π,得到m000=u001+sign(u000,u001)*2*pi,把u000和m000作为极坐标曲线ρ=r两端的参数,就能保证作出和圆弧BC全等且方位相同的曲线。第6行测量语句,作出了变量m000=u001+sign(u000,u001)*2*pi,第7行语句作出以u000和m000作为两端参数的极坐标曲线ρ=r,描点数为n+1,编号为h。执行后,要在曲线的属性对话框里勾选“画点”,并将“间断点最小值”设置得小些。第8行,将极坐标曲线h沿向量OA平移到圆弧BC位置。最后作出r和n的变量尺。程序可以复制到新建立的文件的程序工作区执行。注意,先执行前7行,再执行后3行。执行后,不要忘了设置曲线的属性和调整参数n和r,用鼠标把它们拖开B、C两点,使分点正常地出现。这种方法,n3时分点不出现,要平分圆弧至少要作出4等分点。5.圆弧的可选择的动态n等分点图9-4显示的圆弧等分点,和图9-2中的线段等分点类似,都是不可选择的。既不能给不同的分点染上不同的颜色,也不能将分点作为继续作图的基础。例如,我们不能以一个分点为心作圆。比照图9-3中作出线段的可选择等分点的方法,也可以作出圆弧的可选择等分点。打开文件“9-5圆弧的可选择n等分点.zjz”,如图9-5,可以看到这里的圆弧等分点是可以选择的。可以设置分点的大小和颜色,也可以以分点为心作圆,或以分点为心作线段。图9-5作图程序的前6行和图9-4中的程序前6行相同:A=Point(3,2,A);cr=CircleOfRadius(A,r,);B=PointOnConic(cr,B);C=PointOnConic(cr,C);ArcOnCircle(B,C,cr,);MeasureExpress(u001+sign(u000,u001)*2*pi);d=(m000-u000)/floor(n);Variable(n,);Variable(r,);for(i=1;i100;i=i+1){Rotate(B,A,sign(n,i)*i*d,);}第7行计算出等分出来的一小段弧的弧度d;第8、9行作出参数n、r的变量尺;最后一行用for循环语句和以A为心的旋转变换,使点B旋转,作出99个点。当in时,旋转角是d的1至n-1倍,作出各分点;对于更大的i,因sign(n,i)=0故旋转角为0,作出的点和圆弧的端点B重合。这样,表面上就只看见分点了。将上面的10行程序复制并粘贴到新文件的程序区,可以一次执行。为了不显示分点的名字,在执行程序前可以先看看菜单项“对象|新点自动生成名字”。如果此项前面有个勾,就单击它使勾消失。这时执行程序,分点就没有名字了。还要注意的是,程序执行后,圆弧两端点B、C会重合。用鼠标把它们拖开即可。为了显示分点,还要让参数n大于2。[习题9-1]本节叙述的作圆弧等分点的方法,是对在圆上任意取点后作出的圆弧而言。如果先指定了圆弧的两端点(自由点或约束点)和圆弧的圆心,该如何作出圆弧的动态n等分点呢?(提示:作出圆弧的圆心,测量从圆心到圆弧端点的向量角来代替原作图方法中所用的参数u000和u001;具体分别见前述两文件的第二页。)二动态的正n边形和完全图既然能够作圆弧的动态n等分点,当然也可以作动态的圆内接正n边形。图9-6显示的是文件“9-6正n边形面积和周长.zjz”中所作的动态正n边形。拖动参数n的变量尺上的滑钮,正多边形的边数会从3逐步增加到99。不过,当n40时,看起来已经几乎是一个圆了。图9-6和图形变化同时,正多边形的面积和周长的数据也会作同步的变化。但这并不是对图上的正多边形直接测量得到的,而是测量对应的公式的结果。图的右下方是文本作图命令:Function(rho=1,0,2*pi,n+1,);Variable(n,);MeasureExpress(floor(n));MeasureExpress(pi);MeasureExpress(n*sin(2*pi/n)/2);MeasureExpress(2*pi);MeasureExpress(2*n*sin(pi/n));CircleOfRadius(1,1,);上面第1条命令是在极坐标下作方程为ρ=1的曲线,自变量θ的范围设置为0到2π,曲线上取n+1个点(注意,首尾两点重合,只看见n个点)。这样画出来的曲线是圆。在曲线的属性表中勾选“折线段”(图9-7),就成为正多边形了。后面的几条命令留给读者自己理解。图9-7你会想到,使用类似于上一节图9-5中的程序,可以作出顶点可选择的动态正n边形。其实,作正n边形比n等分圆弧要简单一些,其方法见于文件“9-7顶点可选择的动态正n边形.zjz”,如图9-8。图9-8比较一下,图9-7和图9-5的作图命令有哪些不同?比正多边形复杂一些的图形是所谓的“完全图”。准确地说,是从正多边形的顶点出发所作出的完全图。也就是由一个正多边形和它的所有的对角线构成的图形。例如,图9-9是顶点数为29的完全图。图9-9图9-9是由文件“9-8顶点数为素数的完全图.zjz”生成的。图中有29×28/2=406条线段,图的结构看不清楚。拖动图中的变量尺可减少顶点的数目,当顶点数为7时,如图9-10。图9-10在图9-9的右下部,显示有3行命令:for(n=1;n30;n=n+1){Function(3*cos(t),3*sin(t),t,2*n*pi/floor(m-1),2*n*pi+2*n*pi/floor(m-1),m,);}Variable(m,1,30,);在新窗口的程序工作区执行这3行命令,作
本文标题:超级画板《动态几何教程》9经典范例
链接地址:https://www.777doc.com/doc-3471211 .html