Ho il seguente problema.
Devo disegnare un cubo sospeso in aria che ruota su se stesso.
Se lo disegno in questo modo, inserendo le seguenti righe nella mia funzione di disegno:
va tutto bene.codice:... rotazione+=0.05; glPushMatrix(); glColor3f(0.0f, 0.0f, 1.0f); glTranslatef(posizioneCuboRotante[X], posizioneCuboRotante[Y], posizioneCuboRotante[Z]); glRotatef(rotazione, 0, 1, 1); glutSolidCube(0.5); glPopMatrix(); ...
Mentre se lo disegno in quest'altro modo:
dove la funzione disegnaCuboRotante è la seguente:codice:... rotazione+=0.05; disegnaCuboRotante(posizioneCuboRotante[X], posizioneCuboRotante[Y], posizioneCuboRotante[Z]); ...
mi succede che il cubo si sposta e se ne va.codice:void disegnaCuboRotante(GLfloat x, GLfloat y, GLfloat z) { GLfloat dim=pavimento.cell_size/2; GLfloat x1=x-dim; GLfloat y1=y+dim; GLfloat x2=x+dim; GLfloat y2=y+dim; GLfloat x3=x+dim; GLfloat y3=y-dim; GLfloat x4=x-dim; GLfloat y4=y-dim; glPushMatrix(); glRotatef(rotazione, 0.0f, 0.0f, 1.0f); glColor3f(1,0,0); glNormal3f(0.0, 0.0, 1.0); //SOTTO glBegin(GL_QUADS); glVertex3f(x1, y1, z); glVertex3f(x2, y2, z); glVertex3f(x3, y3, z); glVertex3f(x4, y4, z); glEnd(); //DI FRONTE glBegin(GL_QUADS); glVertex3f(x1, y1, z); glVertex3f(x1, y1, z+1); glVertex3f(x2, y2, z+1); glVertex3f(x2, y2, z); glEnd(); //DIETRO glBegin(GL_QUADS); glVertex3f(x4, y4, z); glVertex3f(x4, y4, z+1); glVertex3f(x3, y3, z+1); glVertex3f(x3, y3, z); glEnd(); //SINISTRA glBegin(GL_QUADS); glVertex3f(x1, y1, z); glVertex3f(x1, y1, z+1); glVertex3f(x4, y4, z+1); glVertex3f(x4, y4, z); glEnd(); //DESTRA glBegin(GL_QUADS); glVertex3f(x2, y2, z); glVertex3f(x2, y2, z+1); glVertex3f(x3, y3, z+1); glVertex3f(x3, y3, z); glEnd(); //SOPRA glBegin(GL_QUADS); glVertex3f(x1, y1, z+1); glVertex3f(x2, y2, z+1); glVertex3f(x3, y3, z+1); glVertex3f(x4, y4, z+1); glEnd(); glPopMatrix(); }
Come potrei risolvere questo problema?

Rispondi quotando