Utilisation d´une pile de matrices
Ce programme affiche un objet fractal arborescent en utilisant une pile de matrices et des translations/rotations/homothéties.
Programme : demoGLUT/demo4.cpp
Sources :demoGLUT/glut-demos-src.zip
Exécutables pour Windows :demoGLUT/glut-demos-win32exe.zip
#include "demo.h" /********************************************************************* * AUTOGENERATED CODE *********************************************************************/ #include "flower.hpp" /********************************************************************* * GUI DESIGN *********************************************************************/ SCENE(Scene,flowerDisplay,NULL); CONTROL(Control,flowerLines); SPLIT(Split,1,0.5,&Control,&Scene); /********************************************************************* * MAIN PROGRAM *********************************************************************/ int main(int argc,char *argv[]){ int a=800,b=600,x,y; glutInit(&argc,argv); x=glutGet(GLUT_SCREEN_WIDTH); y=glutGet(GLUT_SCREEN_HEIGHT); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); glutInitWindowPosition((x-a)/2,(y-b)/2); glutInitWindowSize(a,b); createWindow(&Split,"OpenGL demo"); glutMainLoop(); return 0; }

Pour information:
Le code original qui a été traduit par le programme convert:

int i,j=0,T[10]={0,0,0,0,0,0,0,0,0,0},Degree=#i1:5:10#; float Angle=#f10:30:90#,Scale=#f0.1:0.6:1#,Translate=#f0:1.5:2#; glClear(GL_COLOR_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0.003*MouseX,0.003*MouseY,0); glScalef(#f0.1:0.2:1#,#f0.1:0.2:1#,1); glTranslatef(#f-4:0:4#,#f-4:-0.5:4#,0); do { j++; glColor3f(0.5*(1+cos(j*0.2)),0.5*(1+cos(1+j*0.29)),0.5*(1+cos(1+j*0.37))); glBegin(GL_TRIANGLES); glVertex2f(-0.5,0); glVertex2f(0.5,0); glVertex2f(0,1); glEnd(); i=0; while (T[i] && i<Degree) i++; if (i==Degree){ i--; while (T[i]==2 && i>=0){ T[i]=0; glPopMatrix(); i--; } if (i<0) break; T[i]=2; glPopMatrix(); glPushMatrix(); glRotatef(-Angle,0,0,1); } else { T[i]=1; glPushMatrix(); glRotatef(Angle,0,0,1); } glScalef(Scale,Scale,Scale); glTranslatef(0,Translate,0); } while(1); glFlush(); glutSwapBuffers();
Dernière modification le 18/3/2010
Ce document a été traduit de LaTeX par HeVeA