Bonjour a tous.
Voilà, je débute en opengl et j'essaye de m'exercer un petit peu.
Cependant j'ai quelques difficultés. Je n'ai pas trouvé la réponse dans les tutos ou forums. J'éspère que vous pourrez m'éclaircir un peu.

Pour l'instant j'ai créé un cube transparent (j'ai utilisé glBegin(GL_QUADS) et j'ai donc créé les 6 faces). J 'aimerai maintenant appliquer une rotation de 90° (avec un pas, de l'ordre du 10ième de degré) à ce cube autour de son centre de masse, successivement autour de X, puis de Y et enfin de Z, et ainsi de suite cycliquement jusqu'à parvenir à 360° pour revenir au début de cycle. J'ai essayer plusieurs combinaisons de rotations avec glRotated(); mais je n'ai pas réussi à obtenir le résultat souhaité.

voici une partie du code pour le cube

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
 
void Display()
 
{
 
	glClearColor(0, 0, 0, 0);
 
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//réinitialisation du z-buffer
 
	glMatrixMode(GL_MODELVIEW);
 
	glLoadIdentity();
 
	gluLookAt(4,3,3,0,0,0,0,1,0);
 
 
	// glRotated(angle,1,1,1);??????
 
 
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);//calcul des facteurs de transparence du cube
 
	glBegin(GL_QUADS); // trace le quadrilatère cube
 
 
	glColor4f(0.6, 0.5, 0.8,0.5);
 
	glNormal3f(0,0,1);
	glVertex3i(1, 1, 1);		
 
	glVertex3i(1, -1, 1);
 
	glVertex3i(-1, -1, 1);
 
	glVertex3i(-1, 1, 1);
 
 
 
	glColor4f(1, 0.5, 0.3,0.5);
 
	glNormal3f(0,0,-1);
	glVertex3i(1, 1, -1);
	glVertex3i(1, -1, -1);
 
	glVertex3i(-1, -1, -1);
 
	glVertex3i(-1, 1, -1);
 
 
 
	glColor4f(1, 0.7, 0.5,0.5);
 
	glNormal3f(1,0,0);
	glVertex3i(1, 1, 1);
 
	glVertex3i(1, -1, 1);
 
	glVertex3i(1, -1, -1);
 
	glVertex3i(1, 1, -1);
 
 
 
	glColor4f(1, 0.6, 0.4,0.5);
 
	glNormal3f(-1,0,0);
	glVertex3i(-1, 1, 1); 
 
	glVertex3i(-1, -1, 1);
 
	glVertex3i(-1, -1, -1);
 
	glVertex3i(-1, 1, -1);
 
 
 
	glColor4f(1, 0.5, 1,0.5);
 
	glNormal3f(0,1,0);
	glVertex3i(-1, 1, -1); 
 
	glVertex3i(-1, 1, 1);
 
	glVertex3i(1, 1, 1);
 
	glVertex3i(1, 1, -1);
 
 
 
	glColor4f(1, 0.45, 1,0.5);
 
	glNormal3f(0,-1,0);     
	glVertex3i(-1, -1, -1);
 
	glVertex3i(-1, -1, 1);
 
	glVertex3i(1, -1, 1);
 
	glVertex3i(1, -1, -1);
 
 
 
	glEnd();
 
 
	glutSwapBuffers();
 
}
et voici pour la fonction motion:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
void motion()
 
{
 
	angle = angle + vitesse;
 
	if (angle > 360) angle=0;
 
	glutPostRedisplay();
 
}
et le main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
int main (int argc, char** argv)
 
{
 
 
glutInit(&argc, argv);
 
	glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
 
	glutInitWindowSize(950, 650);
 
	glutInitWindowPosition(150,150);
 
 
	glutCreateWindow("cube");
 
	glutFullScreen();
 
	Init();
 
	myinit(); //eclairage
 
	glutDisplayFunc(Display); //affichage cube
	glutReshapeFunc(myReshape);
	glutIdleFunc(motion);
	glutKeyboardFunc(key);
 
 
	glutMainLoop();
 
 
	return (0);
 
}
j'ai beau chercher , je n'ai toujours pas réussi , merci de m'apporter une éventuelle réponse.