1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > sierpinski三角形的维数_谢尔宾斯基(Sierpinski)三角形

sierpinski三角形的维数_谢尔宾斯基(Sierpinski)三角形

时间:2019-06-23 12:32:48

相关推荐

sierpinski三角形的维数_谢尔宾斯基(Sierpinski)三角形

分形之谢尔宾斯基(Sierpinski)三角形

谢尔宾斯基三角形(英语:Sierpinski triangle)是一种分形,由波兰数学家谢尔宾斯基在19提出,它是一种典型的自相似集。也有的资料将其称之为谢尔宾斯基坟垛.

其生成过程为:

1.取一个实心的三角形。(多数使用等边三角形)

2.沿三边中点的连线,将它分成四个小三角形。

3.去掉中间的那一个小三角形。

4.对其余三个小三角形重复1。

结果演示:

代码:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

MOUSEMSG m;

HWND hOut;

struct Node

{

double posx1,posy1;

double posx2,posy2;

double posx3,posy3;

int num,lifenum;

};

struct Node1

{

double posx1,posy1;

double posx2,posy2;

double posx3,posy3;

int num,lifenum;

};

Node box[100000];

Node1 eat[100000];

int flag;

int exit1,exit2,exit3;

double R;

double pi;

void draw()

{

int i,j,k;

double x,y;

cleardevice();

setlinestyle(PS_SOLID,1);

setlinecolor(BLACK);

for(i=0;i

line(box[i].posx1,box[i].posy1,box[i].posx2,box[i].posy2);

line(box[i].posx2,box[i].posy2,box[i].posx3,box[i].posy3);

line(box[i].posx1,box[i].posy1,box[i].posx3,box[i].posy3);

}

FlushBatchDraw();

}

void ff()

{

int i,j,n;

double k;

R=R/2.0;

n=0;

for(i=0;i

eat[n].posx1=box[i].posx1;

eat[n].posy1=box[i].posy1;

eat[n].posx2=eat[n].posx1+R/2;

eat[n].posy2=eat[n].posy1+R/2*sqrt(3);

eat[n].posx3=eat[n].posx1-R/2;

eat[n].posy3=eat[n].posy1+R/2*sqrt(3);

eat[n+1].posx1=eat[n].posx2;

eat[n+1].posy1=eat[n].posy2;

eat[n+1].posx2=eat[n+1].posx1+R/2;

eat[n+1].posy2=eat[n+1].posy1+R/2*sqrt(3);

eat[n+1].posx3=eat[n+1].posx1-R/2;

eat[n+1].posy3=eat[n+1].posy1+R/2*sqrt(3);

eat[n+2].posx1=eat[n].posx3;

eat[n+2].posy1=eat[n].posy3;

eat[n+2].posx2=eat[n+2].posx1+R/2;

eat[n+2].posy2=eat[n+2].posy1+R/2*sqrt(3);

eat[n+2].posx3=eat[n+2].posx1-R/2;

eat[n+2].posy3=eat[n+2].posy1+R/2*sqrt(3);

n+=3;

}

for(i=0;i

box[i].posx1=eat[i].posx1;box[i].posy1=eat[i].posy1;

box[i].posx2=eat[i].posx2;box[i].posy2=eat[i].posy2;

box[i].posx3=eat[i].posx3;box[i].posy3=eat[i].posy3;

}

flag=n;

cout<

}

void move()

{

int i,j,k;

draw();

Sleep(100);

_getch();

ff();

}

void initialization()

{

int i,j,k;

hOut=initgraph(500, 500,SHOWCONSOLE);

exit1=0;

flag=1;

R=400;

pi=3.141592653;

setbkcolor(WHITE);

setlinecolor(BLACK);

settextcolor(BLACK);

box[0].posx1=250;box[0].posy1=10;

box[0].posx2=50;box[0].posy2=10+200*sqrt(3);

box[0].posx3=450;box[0].posy3=10+200*sqrt(3);

}

void carry()

{

initialization();

BeginBatchDraw();

while(exit1==0){

move();

}

closegraph();

EndBatchDraw();

}

int main()

{

carry();

}

演示视频:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。