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.
Fichier : demoGLUT/demo4.cpp #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: Fichier : demoGLUT/flower.txt 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(); Ce document a été traduit de LaTeX par HeVeA |