Untitled
unknown
c_cpp
5 months ago
1.2 kB
4
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