分别可以使用递归取中点和随机叠加向量取中点的方法
//sierpinsk
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <gl/glut.h>
#include <time.h>
#include <math.h>
void init()
{
glClearColor(1,1,1,0);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1,0,0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0,50,0,50,-1,1);
}
void display()
{
//三个增向量
GLfloat vertices[3][3] = { {0.0,0.0,0.0}, {25.0, 50.0, 0.0}, {50.0, 0.0, 0.0}};
GLfloat p[3] = {0,0,0};
glBegin(GL_POINTS);
glPointSize(3);
for (int i=0; i<5000; ++i) {
int x = rand()%3;
p[0] = (p[0] + vertices[x][0])/2;
p[1] = (p[1] + vertices[x][1])/2;
glVertex3fv(p);
}
glEnd();
glutSwapBuffers();
}
int _tmain(int argc,char* argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(200,200);
glutCreateWindow("tanrunj");
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}