计算机图形学--分形图的生成

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六分形图的生成

班级08信计二学号90 姓名张进分数

一、实验目的和要求:

1、掌握分形基本原理,熟悉分形的计算机模拟算法。

2、学习调试程序及分析运行结果。

For personal use only in study and research; not for commercial use

3、上机操作迭代函数系统算法。

二、实验内容:

1、编程实现分形的自相似法,并输出图形。

For personal use only in study and research; not for commercial use

2、编程实现一棵树,先按某一方向画一条直线段,然后在此线段上找到一系列节点,在每一节点处向左右偏转60度各画一条分支。节点位置和节点处所画分支的长度的比值各按0.618分割。

三、程序执行和运行结果:

1、自相似图形程序:

#include

#include

#include

#include

void star1(int x,int y,int r);

void star2(int x, int y , int r);

void main()

{

int graphdriver,graphmode,x,y,r;

graphdriver=DETECT;

initgraph(&graphdriver,&graphmode," ");

setcolor(LIGHTMAGENTA);

star1(160,160,80);

getch();

star2(480,320,80);

getch();

}

void star1(int x,int y,int r)

{

if(r>0)

{

star1(x-r,y+r,r/2);

star1(x+r,y+r,r/2);

star1(x-r,y-r,r/2);

star1(x+r,y-r,r/2);

bar(x-r,y+r,x+r,y-r);

}

}

void star2(int x, int y , int r)

{

if(r>0)

{star2(x-r,y+r,r/2);

star2(x+r,y+r,r/2);

star2(x-r,y-r,r/2);

star2(x+r,y-r,r/2);

rectangle(x-r,y+r,x+r,y-r);

}

}

输出结果:

2、程序:

#define g 0.618

#define PAI 3.1416

#include”graphics.h”

#include”math.h”

#include”stdio.h”

#include”conio.h”

float thita=6.0;

void grow(int x,int y,float lenth,float fai) {

int x1,y1;

int nx,ny,count;

float nlenth;

x1=x+lenth*cos(fai*PAI/180.0);

y1=y-lenth*sin(fai*PAI/180.0);

line(x,y,x1,y1);

if(lenth<10)

return;

nlenth=lenth;

nx=x;

ny=y;

for(count=0;count<7;count++)

{

nx=nx+nlenth*(1-g)*cos(fai*PAI/180.0);

ny=ny-nlenth*(1-g)*sin(fai*PAI/180.0);

grow(nx,ny,nlenth*(1-g),fai+thita);

grow(nx,ny,nlenth*(1-g),fai-thita);

nlenth*=g;

}

}

void main()

{

int gm,gd;

detectgraph(&gd,&gm);

initgraph(&gd,&gm,””);

grow(300,300,280.0,90.0);

getch();

closegraph();

}

运行结果:

四、实验结果分析:

分形的对称性即表现了传统几何的上下、左右及中心对称。同时它的自相似性又揭示了一种新的对称性,即画面的局部与更大范围的局部的对称,或说局部与整体的对称。它是大小比例的对称,即系统中的每一元素都反映和含有整个系统的性质和信息。

从数学上来讲,曼德布洛特集合是一个复数的集合。曼德布洛特集合就是使以上序列不延伸至无限大的所有c点的集合。.Mandelbrot 集合图形的边界处,具有无限复杂和精细的结构。如果计算机的精度是不受限制的话,可以无限地放大她的边界。当放大某个区域,它的结构就在变化,展现出新的结构元素。这正如前面提到的"蜿蜒曲折的一段海岸线",无论怎样放大它的局部,它总是曲折而不光滑,即连续不可微。如果把所有不同的Julia 集重合起来,我们将会得到一个四维图形,它的其中两个维度是不同的初始值z 构成的复平面,

相关文档
最新文档