计算机图形学分形图生成

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

实验六分形图的生成

班级信计二班学号 20080502066 姓名陈铁映分数

一、实验目的和要求:

1、掌握希尔宾斯基三角形和Julia Set (茱莉亚集)的基本原理。

2、熟悉两个图形的生成算法。

3、掌握希尔宾斯基三角形和和Julia Set (茱莉亚集)的绘制.。

4、提高分形图形生成的理解应用能力。

二、实验内容:

1、对于第一个图形在平面内随机的设置种子,并由此而设定三角形的三个顶点。形成初始化模式后,绘制三万个点,使规则传递下去。

2、对于第二个图形则运用逃逸时间法后设定一个常数c的值。

3、对两图形分别进行分析对比其局部与整体的自相似性。

三、实验结果分析:

1、该程序实现了递归算法和逃逸时间法的图形绘制

2、比较每一小部分与整体的关系:

图形的层次是无限的、分形往往可以从局部“看出”整体、虽然看上

去十分复杂,但其背后的规则却是相当简单。

四、程序代码:

1、希尔宾斯基三角形为:

#include

#include

#include

void main()

{

srand((unsigned)time(NULL)); // 设置随机种子

POINT P[3] = {{320, 50}, {120, 400}, {520, 400}}; // 设定三角形的三个顶点

POINT p = {rand() % 640, rand() % 480}; // 随机产生当前点

// 初始化图形模式

initgraph(640, 480);

// 绘制三万个点

int n;

for(int i = 0; i <= 30000; i++)

{

n = rand() % 3;

p.x = (p.x + P[n].x) / 2;

p.y = (p.y + P[n].y) / 2;

putpixel(p.x, p.y, GREEN);

}

// 按任意键退出

getch();

closegraph();

}

运行结果为:

2、Julia Set (茱莉亚集)的程序代码为:

#include

#include

// 定义复数及乘、加运算

// 定义复数

struct COMPLEX

{

double re;

double im;

};

// 定义复数“乘”运算

COMPLEX operator * (COMPLEX a, COMPLEX b) {

COMPLEX c;

c.re = a.re * b.re - a.im * b.im;

c.im = a.im * b.re + a.re * b.im;

return c;

}

// 定义复数“加”运算

COMPLEX operator + (COMPLEX a, COMPLEX b)

{

COMPLEX c;

c.re = a.re + b.re;

c.im = a.im + b.im;

return c;

}

// 主函数

void main()

{

// 初始化绘图窗口

initgraph(640, 480);

// 绘制Julia Set (茱莉亚集)

COMPLEX z, c;

c.re = -0.75, c.im = 0; // 设置迭代初值

int x, y, k; // 定义循环变量

for(x = 0; x < 640; x++)

{

相关文档
最新文档