Algorithm 版 (精华区)
发信人: sino (茶水博士), 信区: Theory
标 题: 混沌图集(四)
发信站: 哈工大紫丁香 (Sun Aug 27 13:27:45 2000), 转信
发信人: FreeFighter.bbs@bbs.whnet.edu.cn (自由空间), 信区: algorithm
发信站: 武汉白云黄鹤站 (Tue Jan 6 05:34:02 1998)
转信站: ACEBBS!ustcnews!whbbs
分形如同混沌一样迷人,下面的小程序例示了一个简单的分形图案,
通过你聪明的设计,一定可以创造出更精彩的节目!
#include<stdio.h>
#include<math.h>
#include<complex.h>
#include<graphics.h>
#include <stdlib.h>
#include <conio.h>
int drawfractal(int,int,int,int);
void main(void)
{
int gdriver = DETECT, gmode, errorcode;
/* initialize graphics mode */
initgraph(&gdriver, &gmode, "d:\\bc\\bgi");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
drawfractal(300,388,500,50);
drawfractal(100,50,300,388);
drawfractal(500,50,100,50);
getch();
closegraph();
}
int drawfractal(int x1,int y1,int x2,int y2)
{
int x3,x4,y3,y4,x5,y5;
complex z1,z2,z3;
complex z0=complex(0.5,0.866);
if((abs(x1-x2)+abs(y1-y2))<3) return -1;
x3=(x1+x1+x2)/3;
y3=(y1+y1+y2)/3;
x4=(x1+x2+x2)/3;
y4=(y1+y2+y2)/3;
z1=complex(x3,y3);
z2=complex(x4,y4);
z3=(z2-z1)*z0;
x5=(int)(x3+real(z3));
y5=(int)(y3+imag(z3));
line(x1,400-y1,x3,400-y3);
line(x4,400-y4,x2,400-y2);
drawfractal(x3,y3,x5,y5);
drawfractal(x5,y5,x4,y4);
return 0;
}
--
永恒的中微子
-------------------------------------------------o
※ 修改:.fib 於 Aug 27 13:25:20 修改本文.[FROM: bbs.hit.edu.cn]
--
※ 转寄:.南京大学小百合 bbs.nju.edu.cn.[FROM: bbs.hit.edu.cn]
--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: fib.bbs@bbs.nju.edu.]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.344毫秒