3.3.1. Traslación. | Graficacion OpenGL C++

 La traslación es una transformación tridimensional que se utiliza para mover un objeto en una dirección específica en el espacio tridimensional. En OpenGL, se utiliza la función `glTranslatef()` para realizar una traslación.


El siguiente ejemplo muestra cómo realizar una traslación en OpenGL para mover un objeto hacia la derecha:


```c++

// Definir la matriz de transformación

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

glTranslatef(2.0f, 0.0f, 0.0f);


// Dibujar el objeto

glBegin(GL_TRIANGLES);

glVertex3f(-1.0f, -1.0f, 0.0f);

glVertex3f(1.0f, -1.0f, 0.0f);

glVertex3f(0.0f, 1.0f, 0.0f);

glEnd();

```


En este ejemplo, primero se define la matriz de transformación utilizando las funciones `glMatrixMode()` y `glLoadIdentity()`. A continuación, se utiliza la función `glTranslatef()` para realizar una traslación de 2 unidades en la dirección del eje X.


Finalmente, se dibuja un objeto en la ventana de OpenGL utilizando la función `glBegin()` y `glEnd()`, que dibuja un triángulo en la posición transformada.


El resultado de este código sería un triángulo movido hacia la derecha en la ventana de OpenGL.


Es importante destacar que la función `glTranslatef()` se acumula, lo que significa que cada vez que se llama, se aplica una nueva traslación a la matriz de transformación actual. Para evitar que las transformaciones se acumulen, se puede guardar la matriz de transformación actual utilizando la función `glPushMatrix()` antes de llamar a `glTranslatef()`, y restaurarla más tarde utilizando `glPopMatrix()`. 


```c++

// Definir la matriz de transformación

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

glPushMatrix();  // Guardar la matriz de transformación actual

glTranslatef(2.0f, 0.0f, 0.0f);


// Dibujar el primer objeto

glBegin(GL_TRIANGLES);

glVertex3f(-1.0f, -1.0f, 0.0f);

glVertex3f(1.0f, -1.0f, 0.0f);

glVertex3f(0.0f, 1.0f, 0.0f);

glEnd();


glPopMatrix();  // Restaurar la matriz de transformación anterior

glTranslatef(0.0f, 2.0f, 0.0f);


// Dibujar el segundo objeto

glBegin(GL_QUADS);

glVertex3f(-1.0f, -1.0f, 0.0f);

glVertex3f(1.0f, -1.0f, 0.0f);

glVertex3f(1.0f, 1.0f, 0.0f);

glVertex3f(-1.0f, 1.0f, 0.0f);

glEnd();

```


En este ejemplo, se utiliza la función `glPushMatrix()` antes de llamar a `glTranslatef()`, y se utiliza la función `glPopMatrix()` para restaurar la matriz de transformación anterior antes de dibujar el segundo objeto. De esta manera, se asegura que cada objeto se dibuje en su propia posición, sin acumular las transformaciones del objeto anterior.

En resumen, la traslación es una transformación tridimensional que se utiliza para mover un objeto en una dirección específica en el espacio tridimensional. En OpenGL, se utiliza la función `glTranslatef()` para realizar una traslación. Es importante tener en cuenta que la función `glTranslatef()` se acumula, por lo que se recomienda guardar y restaurar la matriz de transformación utilizando las funciones `glPushMatrix()` y `glPopMatrix()` para evitar acumulaciones no deseadas.

Comentarios