Skip to main content

Recursive subdivision of tetrahedron to form 3D Sierpinski gasket using OpenGL

/* Recursive subdivision of tetrahedron to form 3D Sierpinski gasket */ #include #include typedef float point[3]; void menu(int); /* initial tetrahedron */ point v[]={{0.0, 0.0, 1.0}, {0.0, 0.942809, -0.33333}, {-0.816497, -0.471405, -0.333333}, {0.816497, -0.471405, -0.333333}}; static GLfloat theta[] = {0.0,0.0,0.0}; int n; void triangle( point a, point b, point c) /* display one triangle using a line loop for wire frame, a single normal for constant shading, or three normals for interpolative shading */ { glBegin(GL_POLYGON); glNormal3fv(a); glVertex3fv(a); glVertex3fv(b); glVertex3fv(c); glEnd(); } void divide_triangle(point a, point b, point c, int m) { /* triangle subdivision using vertex numbers righthand rule applied to create outward pointing faces */ point v1, v2, v3; int j; if(m>0) { for(j=0; j<3; j++) v1[j]=(a[j]+b[j])/2; for(j=0; j<3; j++) v2[j]=(a[j]+c[j])/2; for(j=0; j<3; j++) v3[j]=(b[j]+c[j])/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) { /* Apply triangle subdivision to faces of tetrahedron */ 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); divide_triangle(v[0], v[2], v[3], m); } void menu(int id) { if (id != 20) { n= id; } else { exit(0); } } void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); tetrahedron(n); glFlush(); } void myReshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if (w <= h) glOrtho(-2.0, 2.0, -2.0 * (GLfloat) h / (GLfloat) w, 2.0 * (GLfloat) h / (GLfloat) w, -10.0, 10.0); else glOrtho(-2.0 * (GLfloat) w / (GLfloat) h, 2.0 * (GLfloat) w / (GLfloat) h, -2.0, 2.0, -10.0, 10.0); glMatrixMode(GL_MODELVIEW); glutPostRedisplay(); } void main(int argc, char **argv) { int m_menu; if(argc>1) n=atoi(argv[1]); else n=4; glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(500, 500); glutCreateWindow("3D Gasket"); m_menu= glutCreateMenu(menu); glutAddMenuEntry("1",1); glutAddMenuEntry("2",2); glutAddMenuEntry("3",3); glutAddMenuEntry("4",4); glutAddMenuEntry("5",5); glutAddMenuEntry("6",6); glutAddMenuEntry("7",7); glutAddMenuEntry("8",8); glutAddMenuEntry("9",9); glutAddMenuEntry("10",10); glutAddMenuEntry("11",11); // glutAddMenuEntry("12",12); // glutAddMenuEntry("13",13); glutAddMenuEntry("Exit",20); glutAttachMenu(GLUT_LEFT_BUTTON); glutReshapeFunc(myReshape); glutDisplayFunc(display); glEnable(GL_DEPTH_TEST); glClearColor (1.0, 1.0, 1.0, 1.0); glutMainLoop(); }

Comments

Popular posts from this blog

Maxon Cinema 4D Studio R13.058 full Keygen Cracked Version | Mediafire Torrent Download Link

Download Maxon CINEMA 4D Studio Full Version With Keygen -Everything You Need for High-End 3D 32 and 64 bit MAXON CINEMA 4D STUDIO R13.058 (x86/x64) CINEMA 4D Studio is the very best that MAXON has to offer for professional 3D artists. If you want to create advanced 3D graphics but need a helping hand to ensure you create jaw-dropping graphics quickly and easily, then this is the choice for you.                     All You Ever Wanted This is our top-of-the-line product. It not only contains everything the other CINEMA 4D versions offer - it goes far beyond. CINEMA 4D Studio has all the tools you need to tackle even the most complex project. Minimum System Requirements Windows XP, Vista or 7 running on Intel or AMD CPU with SSE2-Support; Mac OS X 10.5.8 or higher running on an Intel-based Mac; 1024 MB free RAM, DVD ROM drive. Standard DVD installation can take up to 4 GB of disk space. Software m...

Minitool Power Data Recovery 6.6 Activation Key

- Technician License: MSMCS3KFS58YUPUYVA3388SVC4PPC4P8 SS45A5MMPAXAU3CXKAA8U88A5CY3SVPU ASAAXUKCVM8UYXMSKVXSU55A5434UKP5 5S8P4UMC8544M8A5K88KAPC8W4CKK8PM 4SSXYAMWUM8SSASKYXSMSY35WCKX5PPK ASK4M3M4MAF3C3MXFWUWSV3MV4PKMCPY SSFF3PM835YK8UUVMPFW4SCSMC3YXAPY 5SXVFYMY8MF333SYKMY8KCPUP4AWYFPU CSVKKSKV45MM58M8MUKWA4KUKCA5AWP5 YS8C88KPFMKFK5P84WUAMSU3CC4U8AP4 CSY54KMVFMY8CU4AS5PPPUYP8CP3F8PM 5S3CMXM38AUKYPYUSWVVW3FPX4VUVCPM CS58YMKC3AVVU4KK8843WSYKKCY8M8P5 MSVKKSMUXMWVF5KU4AMM4AV8Y4A55WPU - Enterprise License: 33M5V84A3V44AMVUWVUFXKWXCCU3SUUC X3PFS54PM5SFCKP5W5YY4VXCS44YPWU3 K3KSKP434MWKASWYUK3PPXVP8CWS3PUX P3A3PM4U8VM4F4SKCCPP845FA48X5CUV U3Y5AK4335SXAYWPC3CA4MK834U8XYUX K3M8SXPS4MUXCAY5X4K4A5A5FCW3UFUS K35KC843YAW4UXFFFWMAX8V8FCYVCWUX K3FAW84CWV3UCY35K5YY4UY33CKSUXUX 83PCFMPXY5PVFKKY8KKFMAV45C4UP4UW 8388PU48AAWVAKCVA5FP4853ACSFVCU3 U3YVYU4SXM834AUXWVWAWV3434WPKSUC F3YSS5PMVAWWWSCYFKCFX85SPCP4WWUA 33MY5S4UXVUS45YCMY5UPKVY4CXV5MUV F3XFK445A55A48CWX4SWM3VSWCVYFPU...

Computer acronyms

ADSL - Asymmetric Digital Subscriber Line AGP - Accelerated Graphics Port ALI - Acer Labs, Incorporated ALU - Arithmetic Logic Unit AMD - Advanced Micro Devices APC - American Power Conversion ASCII - American Standard Code for Information Interchange ASIC - Application Specific Integrated Circuit ASPI - Advanced SCSI Programming Interface AT - Advanced Technology ATI - ATI Technologies Inc. ATX - Advanced Technology Extended --- B --- BFG - BFG Technologies BIOS - Basic Input Output System BNC - Barrel Nut Connector --- C --- CAS - Column Address Signal CD - Compact Disk CDR - Compact Disk Recorder CDRW - Compact Disk Re-Writer CD-ROM - Compact Disk - Read Only Memory CFM - Cubic Feet per Minute (ft�/min) CMOS - Complementary Metal Oxide Semiconductor CPU - Central Processing Unit CTX - CTX Technology Corporation (Commited to Excellence) --- D --- DDR - Double Data Rate DDR-SDRAM - Double Data Rate - Synchronous Dynamic Random Access Memory DFI - DFI ...