關於部落格
進資工一甲
  • 6070

    累積人氣

  • 0

    今日人氣

    0

    訂閱人氣

code_使用Sierpinski 演算法畫一堆三角形.c


#include <GL/glut.h>


void myinit(void)
{
 
/* attributes */

    glClearColor(1.0, 1.0, 1.0, 1.0); /* white background */
    glColor3f(1.0, 0.0, 0.0); /* draw in red */

/* set up viewing */
/* 500 x 500 window with origin lower left */

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(0.0, 500.0, 0.0, 500.0);
    glMatrixMode(GL_MODELVIEW);
}

void display( void )
{

/* define a point data type */

    typedef GLfloat point2[2];    

    point2 vertices[3]={{0.0,0.0},{250.0,500.0},{500.0,0.0}}; /* A triangle */

    int i, j, k;
    long rand();       /* standard random number generator */
    point2 p ={75.0,50.0};  /* An srbitrary initial point */

    glClear(GL_COLOR_BUFFER_BIT);  /*clear the window */


/* computes and plots 5000 new points */

    for( k=0; k<5000; k++)
    {
       j=random()%3; /* pick a vertex at random */


     /* Compute point halfway between vertex and old point */

       p[0] = (p[0]+vertices[j][0])/2.0;
       p[1] = (p[1]+vertices[j][1])/2.0;
 
     /* plot new point */

        glBegin(GL_POINTS);
           glVertex2fv(p);
        glEnd();
 
     }
     glFlush(); /* clear buffers */
 }

void main(int argc, char** argv)
{

/* Standard GLUT initialization */

     glutInit(&argc,argv);
     glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); /* default, not needed */
     glutInitWindowSize(500,500); /* 500 x 500 pixel window */
     glutInitWindowPosition(0,0); /* place window top left on display */
     glutCreateWindow("Sierpinski Gasket"); /* window title */
     glutDisplayFunc(display); /* display callback invoked when window opened */

     myinit(); /* set attributes */

     glutMainLoop(); /* enter event loop */
}

相簿設定
標籤設定
相簿狀態