[OpenGL] Rotation geht auf andere Dreiecke (fremde!) über!



  • Hi,

    ich hab den code:

    glLoadIdentity();
    		gluLookAt(0, 0, 6,     0, 0, 0,     0, 1, 0);
    
    		static float b = 0.0f;
    		b += 0.25f;
    
    		// Dreieck 1
    		glTranslatef (0.0f, 0.0f, 0.0f);
    		glRotatef(b,1.0f,1.0f,1.0f);
    
    		glBegin (GL_TRIANGLES);
    			glColor3f	(1.0f,0.0f,0.0f);
                glVertex3f	(0, 1, -0);
    
    			glColor3f	(0.0f,1.0f,0.0f);
    			glVertex3f	(-1, 0, 0);
    
    			glColor3f	(0.0f,0.0f,1.0f);
    			glVertex3f	(1, 0, 0);
    		glEnd (); 
    
    		// Dreieck 2
    		glTranslatef (0.0f, 0.0f, 0.0f);
    		glRotatef(b+0.25f,0.0f,1.0f,0.0f);
    
    		glBegin (GL_TRIANGLES);
    			glColor3f	(1.0f,0.0f,0.0f);
                glVertex3f	(0, 1, -0);
    
    			glColor3f	(0.0f,1.0f,0.0f);
    			glVertex3f	(-1, 0, 0);
    
    			glColor3f	(0.0f,0.0f,1.0f);
    			glVertex3f	(1, 0, 0);
    		glEnd ();
    

    Dreieck 2 das eigentlich NIX mit Dreieck 1 (welches sich um jede Achse drehen soll) nix zu tun, nur es dreht sich aber auch um JEDE Achse, so wie Dreieck 1! Was mache ich falsch!?!?!



  • glPushMatrix();
    //zeiche und rotiere dreieck
    glPopMatrix();
    glPushMatrix();
    //zeiche und rotiere dreieck 2
    glPopMatrix();



  • Vielen Dank 🙂



  • Du musst einfach in deinen Qellcode nach dem erstenDreieck ein

    glLoadIdentity();

    einsetzen,
    da du mit deinem ersten dreieck das koordinaten system drehst und das sich auch auf das zweite dreieck auswirkt.

    mit glLoadIdentity() setzt du das koordinaten system zurück

    Ich hoffe ich konnte dir helfen

    MfG

    Stefan



  • Durch Translate, Rotate etc. wird streng genommen nicht ein Objekt (Polygon) verschoben/rotiert, sondern das Koordinatensystem, in dem sich die Objekte befinden. D.h. mit jedem Rotate rotierst Du das gesammte Koordinatensystem (in dem sich ja beide Dreiecke befinden), wodurch sich visuell beide Dreiecke drehen.


Anmelden zum Antworten