Sierpinski Gasket分形图的绘制

Sierpinski Gasket分形图的绘制

Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
/**//*two-dimensionalSierpinskigasket*/
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
/**//*generatedusingrandomlyselectedvertices*/
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
/**//*andbisection*/
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制#include
<GL/glut.h>
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
voidmyinit()
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制{
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
/**//*attributes*/
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制glClearColor(
1.0,1.0,1.0,1.0);/**//*whitebackground*/
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制glColor3f(
1.0,0.0,0.0);/**//*drawinred*/
Sierpinski Gasket分形图的绘制}

Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
voidreshape(intw,inth)
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制{
Sierpinski Gasket分形图的绘制glViewport(
0,0,(GLsizei)w,(GLsizei)h);
Sierpinski Gasket分形图的绘制glMatrixMode(GL_PROJECTION);
Sierpinski Gasket分形图的绘制glLoadIdentity();
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制gluOrtho2D(
0.0,50.0,0.0,50.0);/**//*setupviewing50.0x50.0cameracoordinatewindowwithoriginlowerleft*/
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制glMatrixMode(GL_MODELVIEW);
Sierpinski Gasket分形图的绘制glLoadIdentity();
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制}

Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
voiddisplay()
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制{
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
/**//*Atriangle*/
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制GLfloatvertices[
3][2]=Sierpinski Gasket分形图的绘制{Sierpinski Gasket分形图的绘制{0.0,0.0},Sierpinski Gasket分形图的绘制{25.0,50.0},Sierpinski Gasket分形图的绘制{50.0,0.0}};
Sierpinski Gasket分形图的绘制
intj,k;
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
intrand();/**//*standardrandomnumbergenerator*/
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制GLfloatp[
2]=Sierpinski Gasket分形图的绘制{7.5,5.0};/**//*arbitraryinitialpointinsidetriangle*/
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制glClear(GL_COLOR_BUFFER_BIT);
/**//*clearthewindow*/
Sierpinski Gasket分形图的绘制glBegin(GL_POINTS);
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
/**//*computeandplot5000newpoints*/
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
for(k=0;k<5000;k++)
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制{
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制j
=rand()%3;/**//*pickavertexatrandom*/
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
/**//*computepointhalfwaybetweenselectedvertexandoldpoint*/
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制p[
0]=(p[0]+vertices[j][0])/2.0;
Sierpinski Gasket分形图的绘制p[
1]=(p[1]+vertices[j][1])/2.0;
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
/**//*plotnewpoint*/
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制glVertex2fv(p);
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制}

Sierpinski Gasket分形图的绘制glEnd();
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制glFlush();
/**//*clearbuffers*/
Sierpinski Gasket分形图的绘制}

Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
intmain(intargc,char**argv)
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制{
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
/**//*standardGLUTinitialization*/
Sierpinski Gasket分形图的绘制glutInit(
&argc,argv);
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制glutInitDisplayMode(GLUT_SINGLE
|GLUT_RGB);/**//*default,notneeded*/
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制glutInitWindowSize(
500,500);/**//*500x500pixelwindow*/
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制glutInitWindowPosition(
0,0);/**//*placewindowtopleftondisplay*/
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制glutCreateWindow(
"SierpinskiGasket");/**//*windowtitle*/
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制glutDisplayFunc(display);
/**//*displaycallbackinvokedwhenwindowopened*/
Sierpinski Gasket分形图的绘制glutReshapeFunc(reshape);
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制myinit();
/**//*setattributes*/
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制glutMainLoop();
/**//*entereventloop*/
Sierpinski Gasket分形图的绘制}

Sierpinski Gasket分形图的绘制

Sierpinski Gasket分形图的绘制

Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
/**//*recursivesubdivisionoftriangletoformSierpinskigasket*/
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
/**//*numberofrecursivestepsgivenoncommandline*/
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制#include
<GL/glut.h>
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
/**//*initialtriangle*/
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制GLfloatv[
3][2]=Sierpinski Gasket分形图的绘制{Sierpinski Gasket分形图的绘制{-1.0,-0.58},Sierpinski Gasket分形图的绘制{1.0,-0.58},Sierpinski Gasket分形图的绘制{0.0,1.15}};
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
intn;
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
voidtriangle(GLfloat*a,GLfloat*b,GLfloat*c)
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
/**//*specifyonetriangle*/
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制{
Sierpinski Gasket分形图的绘制glVertex2fv(a);
Sierpinski Gasket分形图的绘制glVertex2fv(b);
Sierpinski Gasket分形图的绘制glVertex2fv(c);
Sierpinski Gasket分形图的绘制}

Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
voiddivide_triangle(GLfloat*a,GLfloat*b,GLfloat*c,intm)
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制{
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
/**//*trianglesubdivisionusingvertexnumbers*/
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制GLfloatv0[
2],v1[2],v2[2];
Sierpinski Gasket分形图的绘制
intj;
Sierpinski Gasket分形图的绘制
if(m>0)
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制{
Sierpinski Gasket分形图的绘制
for(j=0;j<2;j++)v0[j]=(a[j]+b[j])/2;
Sierpinski Gasket分形图的绘制
for(j=0;j<2;j++)v1[j]=(a[j]+c[j])/2;
Sierpinski Gasket分形图的绘制
for(j=0;j<2;j++)v2[j]=(b[j]+c[j])/2;
Sierpinski Gasket分形图的绘制divide_triangle(a,v0,v1,m
-1);
Sierpinski Gasket分形图的绘制divide_triangle(c,v1,v2,m
-1);
Sierpinski Gasket分形图的绘制divide_triangle(b,v2,v0,m
-1);
Sierpinski Gasket分形图的绘制}

Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
elsetriangle(a,b,c);/**//*drawtriangleatendofrecursion*/
Sierpinski Gasket分形图的绘制}

Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
voiddisplay()
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制{
Sierpinski Gasket分形图的绘制glClear(GL_COLOR_BUFFER_BIT);
Sierpinski Gasket分形图的绘制glBegin(GL_TRIANGLES);
Sierpinski Gasket分形图的绘制divide_triangle(v[
0],v[1],v[2],n);
Sierpinski Gasket分形图的绘制glEnd();
Sierpinski Gasket分形图的绘制glFlush();
Sierpinski Gasket分形图的绘制}

Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
voidmyinit()
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制{
Sierpinski Gasket分形图的绘制glMatrixMode(GL_PROJECTION);
Sierpinski Gasket分形图的绘制glLoadIdentity();
Sierpinski Gasket分形图的绘制gluOrtho2D(
-2.0,2.0,-2.0,2.0);
Sierpinski Gasket分形图的绘制glMatrixMode(GL_MODELVIEW);
Sierpinski Gasket分形图的绘制glClearColor(
1.0,1.0,1.0,1.0);
Sierpinski Gasket分形图的绘制glColor3f(
0.0,0.0,1.0);
Sierpinski Gasket分形图的绘制}

Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
intmain(intargc,char**argv)
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制{
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制n
=3;/**//*orsetnumberofsubdivisionstepshere*/
Sierpinski Gasket分形图的绘制glutInit(
&argc,argv);
Sierpinski Gasket分形图的绘制glutInitDisplayMode(GLUT_SINGLE
|GLUT_RGB);
Sierpinski Gasket分形图的绘制glutInitWindowSize(
500,500);
Sierpinski Gasket分形图的绘制glutCreateWindow(
"SierpinskiGasket");
Sierpinski Gasket分形图的绘制glutDisplayFunc(display);
Sierpinski Gasket分形图的绘制myinit();
Sierpinski Gasket分形图的绘制glutMainLoop();
Sierpinski Gasket分形图的绘制}

Sierpinski Gasket分形图的绘制

Sierpinski Gasket分形图的绘制

Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制/**//*recursivesubdivisionofatetrahedrontoform3DSierpinskigasket*/
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
/**//*numberofrecursivestepsgivenoncommandline*/
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制#include
<stdlib.h>
Sierpinski Gasket分形图的绘制#include
<GL/glut.h>
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
/**//*initialtetrahedron*/
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制GLfloatv[
4][3]=Sierpinski Gasket分形图的绘制{Sierpinski Gasket分形图的绘制{0.0,0.0,1.0},Sierpinski Gasket分形图的绘制{0.0,0.942809,-0.33333},
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制{-0.816497,-0.471405,-0.333333},Sierpinski Gasket分形图的绘制{0.816497,-0.471405,-0.333333}}
;
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制GLfloatcolors[
4][3]=Sierpinski Gasket分形图的绘制{Sierpinski Gasket分形图的绘制{1.0,0.0,0.0},Sierpinski Gasket分形图的绘制{0.0,1.0,0.0},
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制{0.0,0.0,1.0},Sierpinski Gasket分形图的绘制{0.0,0.0,0.0}}
;
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
intn;
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
voidtriangle(GLfloat*va,GLfloat*vb,GLfloat*vc)
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制{
Sierpinski Gasket分形图的绘制glVertex3fv(va);
Sierpinski Gasket分形图的绘制glVertex3fv(vb);
Sierpinski Gasket分形图的绘制glVertex3fv(vc);
Sierpinski Gasket分形图的绘制}

Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
voidtetra(GLfloat*a,GLfloat*b,GLfloat*c,GLfloat*d)
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制{
Sierpinski Gasket分形图的绘制glColor3fv(colors[
0]);
Sierpinski Gasket分形图的绘制triangle(a,b,c);
Sierpinski Gasket分形图的绘制glColor3fv(colors[
1]);
Sierpinski Gasket分形图的绘制triangle(a,c,d);
Sierpinski Gasket分形图的绘制glColor3fv(colors[
2]);
Sierpinski Gasket分形图的绘制triangle(a,d,b);
Sierpinski Gasket分形图的绘制glColor3fv(colors[
3]);
Sierpinski Gasket分形图的绘制triangle(b,d,c);
Sierpinski Gasket分形图的绘制}

Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
voiddivide_tetra(GLfloat*a,GLfloat*b,GLfloat*c,GLfloat*d,intm)
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制{
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制GLfloatmid[
6][3];
Sierpinski Gasket分形图的绘制
intj;
Sierpinski Gasket分形图的绘制
if(m>0)
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制{
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
/**//*computesixmidpoints*/
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
for(j=0;j<3;j++)mid[0][j]=(a[j]+b[j])/2;
Sierpinski Gasket分形图的绘制
for(j=0;j<3;j++)mid[1][j]=(a[j]+c[j])/2;
Sierpinski Gasket分形图的绘制
for(j=0;j<3;j++)mid[2][j]=(a[j]+d[j])/2;
Sierpinski Gasket分形图的绘制
for(j=0;j<3;j++)mid[3][j]=(b[j]+c[j])/2;
Sierpinski Gasket分形图的绘制
for(j=0;j<3;j++)mid[4][j]=(c[j]+d[j])/2;
Sierpinski Gasket分形图的绘制
for(j=0;j<3;j++)mid[5][j]=(b[j]+d[j])/2;
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
/**//*create4tetrahedronsbysubdivision*/
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制divide_tetra(a,mid[
0],mid[1],mid[2],m-1);
Sierpinski Gasket分形图的绘制divide_tetra(mid[
0],b,mid[3],mid[5],m-1);
Sierpinski Gasket分形图的绘制divide_tetra(mid[
1],mid[3],c,mid[4],m-1);
Sierpinski Gasket分形图的绘制divide_tetra(mid[
2],mid[4],d,mid[5],m-1);
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制}

Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
else(tetra(a,b,c,d));/**//*drawtetrahedronatendofrecursion*/
Sierpinski Gasket分形图的绘制}

Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
voiddisplay()
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制{
Sierpinski Gasket分形图的绘制glClear(GL_COLOR_BUFFER_BIT
|GL_DEPTH_BUFFER_BIT);
Sierpinski Gasket分形图的绘制glBegin(GL_TRIANGLES);
Sierpinski Gasket分形图的绘制divide_tetra(v[
0],v[1],v[2],v[3],n);
Sierpinski Gasket分形图的绘制glEnd();
Sierpinski Gasket分形图的绘制glFlush();
Sierpinski Gasket分形图的绘制}

Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
voidmyReshape(intw,inth)
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制{
Sierpinski Gasket分形图的绘制glViewport(
0,0,w,h);
Sierpinski Gasket分形图的绘制glMatrixMode(GL_PROJECTION);
Sierpinski Gasket分形图的绘制glLoadIdentity();
Sierpinski Gasket分形图的绘制
if(w<=h)
Sierpinski Gasket分形图的绘制glOrtho(
-2.0,2.0,-2.0*(GLfloat)h/(GLfloat)w,
Sierpinski Gasket分形图的绘制
2.0*(GLfloat)h/(GLfloat)w,-10.0,10.0);
Sierpinski Gasket分形图的绘制
else
Sierpinski Gasket分形图的绘制glOrtho(
-2.0*(GLfloat)w/(GLfloat)h,
Sierpinski Gasket分形图的绘制
2.0*(GLfloat)w/(GLfloat)h,-2.0,2.0,-10.0,10.0);
Sierpinski Gasket分形图的绘制glMatrixMode(GL_MODELVIEW);
Sierpinski Gasket分形图的绘制glutPostRedisplay();
Sierpinski Gasket分形图的绘制}

Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制
intmain(intargc,char**argv)
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制
Sierpinski Gasket分形图的绘制{
Sierpinski Gasket分形图的绘制Sierpinski Gasket分形图的绘制n
=3;/**//*orenternumberofsubdivisionstepshere*/
Sierpinski Gasket分形图的绘制glutInit(
&argc,argv);
Sierpinski Gasket分形图的绘制glutInitDisplayMode(GLUT_SINGLE
|GLUT_RGB|GLUT_DEPTH);
Sierpinski Gasket分形图的绘制glutInitWindowSize(
500,500);
Sierpinski Gasket分形图的绘制glutCreateWindow(
"3DGasket");
Sierpinski Gasket分形图的绘制glutReshapeFunc(myReshape);
Sierpinski Gasket分形图的绘制glutDisplayFunc(display);
Sierpinski Gasket分形图的绘制glEnable(GL_DEPTH_TEST);
Sierpinski Gasket分形图的绘制glClearColor(
1.0,1.0,1.0,1.0);
Sierpinski Gasket分形图的绘制glutMainLoop();
Sierpinski Gasket分形图的绘制}

Sierpinski Gasket分形图的绘制