glTranslate()

glTranslate ist definiert im OpenGL zugehörigen Include des jeweiligen Betriebsystems.

Funktion

glTranslate() verschiebt den Szenenmittelpunkt um die übergebenen Werte. Der Szenenmittelpunkt ist der Nullpunkt, an dem sich alle hinzugefügten Vertexe orientieren. Dies ermöglicht beispielsweise ein beschriebenes Objekt mehrfach in die Szene einzukopieren, in dem man die Szene dahin bewegt, wo man das Objekt einfügen möchte und fügt es dann ein.

Signatur

void glTranslated( GLdouble x, GLdouble y, GLdouble z);
void glTranslatef( GLfloat  x, GLfloat 	y, GLfloat  z);

x: Verschiebung an der X Achse, positive Werte gehen nach links
y: Verschiebung an der Y Achse, positive Werte gehen nach oben
z: Verschiebung an der Z Achse, positive Werte gehen nach hinten (aus dem Bildschirm heraus)

Fehlerquellen

Hinweise

Beispiel

void display( void )
{
  /* clear all pixels */
 
  glClear( GL_COLOR_BUFFER_BIT );
  glTranslatef( -1.5f, 0.0f, -6.0f );   // Szenenmittelpunkt um 1,5 Einheiten nach 
                                        // links und 6 Einheiten nach vorne verlegen
 
  glBegin(GL_TRIANGLES);                // Beginne, Dreiecke zu zeichnen
    glVertex3f( 0.0f, 1.0f, 0.0f);      // mittig oben
    glVertex3f(-1.0f,-1.0f, 0.0f);      // unten links
    glVertex3f( 1.0f,-1.0f, 0.0f);      // unten rechts
  glEnd();                              // Keine weiteren Dreiecke mehr
 
  glTranslatef(3.0f,0.0f,0.0f);	        // Szenenmittelpunkt um 3 Einheiten
                                        //  nach rechts verschieben
 
  glBegin(GL_QUADS);                    // Beginne, Quadrate zu zeichnen
    glVertex3f(-1.0f, 1.0f, 0.0f);      // oben links
    glVertex3f( 1.0f, 1.0f, 0.0f);      // oben rechts
    glVertex3f( 1.0f,-1.0f, 0.0f);      // unten rechts 
    glVertex3f(-1.0f,-1.0f, 0.0f);      // unten links  
  glEnd();                              // Keine weiteren Quadrate mehr.
 
  glFlush();
}

Zu beachten, dass obwohl das Dreiecke und das Quadrat die gleichen Koordinaten unten links und unten rechts besitzen, sie dennoch nicht übereinander liegen, sondern dank glTranslate das Quadrat um 3 Einheiten weiter rechts liegt.

siehe auch