下载此文档

几何画板与分形几何.docx


文档分类:IT计算机 | 页数:约5页 举报非法文档有奖
1/5
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/5 下载此文档
文档列表 文档介绍
该【几何画板与分形几何 】是由【shijijielong001】上传分享,文档一共【5】页,该文档可以免费在线阅读,需要了解更多关于【几何画板与分形几何 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。几何画板与分形几何
在近代科学中,分形常和分歧(Bifurcation)、孤粒子(Soliton)、混沌(Chaos)相提并论,因为物理学家特别关注这些现象常常交织在一起。分形混沌现象常常产生一幅幅变化莫测奇境般的图象,令理论科学家叹为观止。可以说,计算机对图形的作用,绝不亚于显微镜对生物和医学的作用。就连科学家一般不轻易涉足的艺术领域,分形也大有用武之地,因为在计算机上产生的山脉,彩云,花草,树木等画面已达到了以假乱真的地步。近年来,计算机动画等在电影特技上的表现常常让人们拍案叫绝,计算机动画中就常有分形的应用。
称之为分形的结构一般都有内在的几何规律性,即比例自相似性,并不是杂乱无章的,就象混沌一样,在无序中含有有序的结构。大多数分形在一定的标度范围内是不变的,在这个范围内,不断地显现放大任何部分,其不规则程度都是一样的,这个性质称为比例性。按照统计的观点,几乎所有的分形又是置换不变的,即它的每一部分移位、旋转、缩放等在统计的意义下与其它任意部分相似。这两个性质表明分形决不是完全的混乱,在它的不规则性中存在着一定的规则性。它同时暗示着自然界中一切形状及现象都能以较小或部分的细节反映出整体的不规则性。
更早时候,AlbertDUrer(1471-1528)就基于一个正五边形生成了一个分形体:对一个正五边形的每条边,向外生成另外五个正五边形,构成了一个大五边形的轮廓。我们可以发现,两个小五边形之间的等腰三角形的底边和腰长度之比为AC:BC=2cos72"=,正是黄金分割点。小大五边形边长之比为s:S=1:(2+2cos72"),只要S知道了,就可以算出s。产生分形体的做法是:给出一个边长为S的大正五边形,在里面放进五个边长为s的小的正五边形,再在每个五边形里面各放进五个更小的边长比为S:s的正五边形,重复该过程以至无穷,就得到一个分形体,它具有无限精细的结构。
分形图形艺术是一门高科技的特殊艺术,分形艺术作品的展示问题一直令人头痛,屏幕显示比较好解决,打印输出则比较麻烦。一般分形图形以图形文件形式存贮,格式主要为TIF、GIF、JPG、BMP等。其中用GIF和JPG存贮能节省大量磁盘空间,但JPG存贮是有损压缩。这些图形可以做得很小(如300x300象素),或者做成标准VGA大小(640x480象素),颜色有两色、16色等。但是这样的图形还不具有很强的美学感召力,要达到彩色印刷的水平,图形必须做得足够大(2000x2000象素以上),色彩应当256色以上。输出分形图形虽然有许多方法,但都不甚理想。输出分形图形的方法主要有:
1)针式打印(黑白或彩色)或者黑白喷墨,这是最简陋的老办法,质量也不佳。
2)屏幕拍照,然后冲印、放大,对于大图形无效。
3)黑白激光打印,对于彩色或者大幅面图形无效。
4)彩色喷墨打印(如Canon,HP,Epson机等),幅面小,色彩还原不准,用高档设备效果尚可。
5)热腊、热升华,质量较好(600dpi),但成本太高,幅面小。
6)静电印画,幅面大,精度高,成本也高。
7)NovaJet或者HPDesignJet喷绘,质量较好(360dpi以上),幅面大(90cmx无限长)。
“天工”或者''御笔”等大型彩色喷绘,幅面大,精度低(30dpi以下),成本高。
用苹果机或者PC机分色(一般分CMYK四色,有时需出专色)胶片,按传统办法彩色印刷,精度很高(胶片可达3000dpi)。
能够制作出展览级较大图形的方法大概只有6)、7)和9)。
'图形接口”问题。PASCAL提供了多
种*.BGI驱动程序,通过初始化后,即可在图形界面下调用有关''函数”、''过程",对屏幕、内存、文件等进行若干操作。(欲了解详情请参考《TurboPASCAL库函数参考指南》一类书,也可以启动TurboPASCAL的''集成开发环境"(IDE),打开''帮助"(Help)选单学****查询。)
程序如果要使用图形方式,程序开头应当在Uses语句中声明(UsesGraph;)。启动图形方式用''InitGraph过程”,关闭图形方式用''CloseGraph过程”。绘完图,一定不要忘记关闭图形方式。在文本方式下输出字符是方便的,但在图形方式下,则必须用专门的语句向屏幕指定的位置输出文字。常用如下几个过程:
SetBkColor(颜色号码);{设置背景颜色}
SetColor(颜色号码);{设置前景图画颜色}
SetTextStyle(字体,方向,字号);{设置字模}
OutTextXY(横坐标,纵坐标,欲输出的字符串);{输出文字}
上面的第三个过程中说的字体,存放在*.CHR文件中,此类文件与*.BGI文件的路径应当告诉程序,否则程序找不到,不能加载。
绘图中最重要的一个语句当属描点语句了,在PASCAL中需调用PutPixel过程:PutPixel(横坐标,纵坐标,颜色值);坐标值在计算机中当然都得用'整数”来表示,所以如果这些值原来不是整数,在描点之前需要把它们变成整数(用取整函数Round即可)。为提高效率,要经常使用块读、块写过程,特别是将内存的信息写到文件中去时。这两个过程是:
BlockRead(FromF,buf,SizeOf(buf),NumRead);
BlockWrite(ToF,buf,NumRead,NumWritten);在读写一个文件之前必须打开这个文件,所以这两个过程通常与下述语句连用:
Assign(f,filename);{将外部文件名赋给一个文件变量}
ReWrite(f,1);{创建并打开文件}
BlockWrite(f,,sizeof());
BlockWrite(f,,sizeof());
BlockWrite(f,bps,SizeOf(bps));
BlockWrite(f,pal,SizeOf(pal));
size:=ImageSize(0,0,299,119);
GetMem(p,size);{p是指针变量}
BlockRead(f,pdsize);
PutImage(0,0,pdcopyput);
FreeMem(p,size);
在图形方式下想在屏幕输出程序计算出来的变量的值,首先应当将变量的值转化成字符串,然后移动指针到指定的位置,再用OutText输出符号串。
Usesgraph,crt;
Var
pmin:real;{定义实数变量}
ppx:string;{定义字符串变量}
SetTextStyle(1,0,4);
Str(pmin,ppx);{将实数转换成字符串}OutTextXY(10,380,'pmin=');{在(10,380)处输出“pmin=”字样}MoveTo(80,380);{将指针移到(80,380)处}
OutText(ppx);{写ppx所代表的字符串}
最后两句也可以用OutTextXY(80,380,ppx)写。用熟了PASCAL的图形接口语句,再转到C或者C++都相当容易,只是在PASCAL中可以随便用大小写,而C语言严格区分大小写(InitGraph与initgraph不同),不能随便用。
例如,为了程序运行的一致性,,大家可以根据各种C语言之间的差别移植到其它C语言的环境中去。首先我们将图形初始化定义、原点的设定和终止设定3个专用函数,:/**/
#include<>
#include<>#include<>
#include<>#include<>
#include<>
#definePIM_PI#
voidginit(void)/*图形初始化函数*/
{
intdriver=DETECT,mode,err;initgraph(&driver,&mode,"");
if(grOk!=(err=graphresult()))
{printf("Error:%s\n",grapherrormsg(err));
exit(1);
}
}
voidgend(void)/*图形关闭函数*/
{
sound(3500);delay(400);
nosound();getch();
cleardevice();closegraph();
}
voidset0(intx0,inty0)/*原点位置函数*/
{setviewport(x0,y0,639,399,0);
}
doubleLPX=,LPY=;/*当前位置的XY坐标*/
doubleANGLE=,RADIAN=;/*当前角的角度和弧度*/
voidsetlp(doublelpx,doublelpy)/*当前位置设置函数*/
{
LPX=lpx;LPY=lpy;
}
voidsetangle(doubleangle)/*当前角度设置函数*/
{ANGLE=angle;RADIAN=ANGLE*M_PI/180;
}
voidturn(doubleangle)/*当前角度旋转函数*/
{
ANGLE+=angle;
ANGLE=ANGLE-(int)ANGLE+(int)ANGLE%360;
RADIAN=ANGLE*M_PI/180;
}
voidwarp(doublelength)/*指定距离的弯曲函数*/
{LPX+=length*cos(RADIAN);
LPY-=length*sin(RADIAN);
}
voidmove(doublelength)/*指定长度直线的描画函数*/
{
doublex,y;x=LPX+length*cos(RADIAN);y=LPY-length*sin(RADIAN);line(LPX,LPY,x,y);
LPX=x;LPY=y;
}
、系统中的BGI函数()和数学函数()等编制完成。
§,所以,我们一开始就来熟悉这个方法。一般地,由递归所描画的图形都具有某种形式的自相似性质,但不一定是严格意义下的自相似图形,我们一般称由递归所生
成的图形为“递归图形”,而“分形图形”一般指那种具有严格的自相似性质的图形。
下面我们先举两个递归图形的例子,一个是涡旋曲线,不具有自相似性质,另一个就是Koch曲线,具有自相似性质,是分形。

设现在位置为A,角度为0度,以直线长度160个象素代入递归函数spiral中,描画直线并旋转45度,缩小直线长度为原来的scale倍,重复上述过程,直到直线长度小于1个象素时递归结束.
值得注意的是,在使用递归的程序中必须具有从某处退出的条件,否则会陷入死循环,永久地计算和描画下去。至于退出的方法,常用的有两种,一种就是前面用的选择一个表示长度的参数,当其值比某边界值小时则退出。另一种常用的方法是对递归次数进行计数,当达到某值时则退出。

几何画板与分形几何 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数5
  • 收藏数0 收藏
  • 顶次数0
  • 上传人shijijielong001
  • 文件大小66 KB
  • 时间2022-11-26