Untitled
unknown
c_cpp
a year ago
1.2 kB
18
Indexable
#include <GL/glut.h>
void drawCube(float x, float y, float z, float size) {
glPushMatrix();
glTranslatef(x, y, z);
glutSolidCube(size);
glPopMatrix();
}
void drawSierpinskiCube(float x, float y, float z, float size, int level) {
if (level == 0) {
drawCube(x, y, z, size);
} else {
float newSize = size / 3.0;
for (int i = -1; i <= 1; i++) {
for (int j = -1; j <= 1; j++) {
for (int k = -1; k <= 1; k++) {
if (abs(i) + abs(j) + abs(k) > 1) {
drawSierpinskiCube(x + i * newSize, y + j * newSize, z + k * newSize, newSize, level - 1);
}
}
}
}
}
}
void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
drawSierpinskiCube(0, 0, 0, 1.0, 3); // Level 3 recursion
glFlush();
}
int main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(500, 500);
glutCreateWindow("Sierpinski Cube");
glEnable(GL_DEPTH_TEST);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
Editor is loading...
Leave a Comment