Program To Recursively Subdivide A Tetrahedron To From 3D Sierpinski Gasket - The Number of Recursive Steps Is To Be Specified by The User
Program To Recursively Subdivide A Tetrahedron To From 3D Sierpinski Gasket - The Number of Recursive Steps Is To Be Specified by The User
#include <stdlib.h>
#include <stdio.h>
#include <GL/glut.h>
int n;
void triangle(point a, point b, point c)
{
glBegin(GL_POLYGON);
glVertex3fv(a);
glVertex3fv(b);
glVertex3fv(c);
glEnd();
}
void divide_triangle(point a, point b, point c, int m)
{
point v1, v2, v3;
if (m > 0)
{
for (int i = 0; i < 3; i++)
{
v1[i] = (a[i] + b[i]) / 2;
v2[i] = (a[i] + c[i]) / 2;
v3[i] = (b[i] + c[i]) / 2;
}
divide_triangle(a, v1, v2, m - 1);
divide_triangle(c, v2, v3, m - 1);
divide_triangle(b, v3, v1, m - 1);
}
else
{
triangle(a, b, c);
/* draw triangle at end of recursion */
}
}
void tetrahedron(int m)
{
glColor3f(1.0, 0.0, 0.0);
divide_triangle(v[0], v[1], v[2], m);
glColor3f(0.0, 1.0, 0.0);
divide_triangle(v[3], v[2], v[1], m);
glColor3f(0.0, 0.0, 1.0);
divide_triangle(v[0], v[3], v[1], m);
glColor3f(0.0, 0.0, 0.0);
CG Lab Prgm-1
OUTPUT:
CG Lab Prgm-1