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毫秒