📄 sierpinski_c_program.c
字号:
//本程序利用分形技术画图
//先画一个Sierpinski三角形,再画一棵树
//BC 3.1 编译,也可用TC或BCW
//其中函数initgraph的第三个参数可能需要修改
#include "graphics.h"
#include "math.h"
#include "stdlib.h"
#include "conio.h"
#include "time.h"
#define N 65535 //迭代次数
//=============================================================
main()
{ int GraphDriver=DETECT;
int GraphMode;
unsigned int k,mod;
double TempX,TempY,StartX,StartY;
initgraph(&GraphDriver,&GraphMode,"c:\\bc31\\bgi");
randomize();
//===============================================================
//Draw triangle 用迭代函数系(IFS)画三角形
//===============================================================
setbkcolor(BLUE);
cleardevice();
TempX=(double)getmaxx();
TempY=(double)getmaxy();
StartX=TempX;
StartY=TempY;
for(k=1;k<N;k++)
{ TempX=TempX*0.5;
TempY=TempY*0.5;
mod=random(32766) % 3;
switch(mod)
{ case 0: break;
case 1: TempX+=(double)StartX*0.5;
break;
case 2: TempY+=(double)StartY*0.5;
}
putpixel((int)TempX,(int)TempY,YELLOW);
}
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,0);
setusercharsize(3,1,3,1);
outtextxy(450,340,"OK");
getch();
//==============================================================
//Draw tree 用迭代函数系(IFS)画树
//==============================================================
setbkcolor(BLUE);
cleardevice();
mod=random(32766) % 3;
switch(mod)
{ case 0: break;
case 2: TempX=0.2*StartX-0.16*StartY;
TempY=0.23*StartX+0.22*StartY+1.2;
break;
case 3: TempX=0.2*StartY-0.16*StartX;
TempY=0.26*StartX+0.28*StartY+0.44;
}
putpixel(
100+ (unsigned int)(TempX * (double)(120)),
480- (unsigned int)(TempY * (double)(100)),
GREEN
); //Draw first tree 第一棵树
StartX=TempX;
StartY=TempY;
settextstyle(TRIPLEX_FONT,HORIZ_DIR,0);
setusercharsize(2,1,3,1);
outtextxy(450,340,"OK");
getch();
closegraph();
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -