3.3.5. Perspectiva. | Graficacion OpenGL C++ Ejemplos

 La perspectiva es una transformación tridimensional que se utiliza para simular la percepción humana de la profundidad en una escena. En OpenGL, se utiliza la función `gluPerspective()` para definir la perspectiva de la escena.


El siguiente ejemplo muestra cómo utilizar la función `gluPerspective()` para definir la perspectiva de una escena en OpenGL:


```c++

// Definir la matriz de proyección

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluPerspective(60.0f, 1.0f, 0.1f, 100.0f);


// Definir la matriz de transformación

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

glTranslatef(0.0f, 0.0f, -5.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 proyección utilizando las funciones `glMatrixMode()` y `glLoadIdentity()`. A continuación, se utiliza la función `gluPerspective()` para definir la perspectiva de la escena. Esta función recibe cuatro parámetros: el ángulo de apertura en grados, la relación de aspecto, la distancia del plano cercano y la distancia del plano lejano.


Después de definir la matriz de proyección, se define la matriz de transformación utilizando las mismas funciones que en los ejemplos anteriores. 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 dibujado con perspectiva en la ventana de OpenGL.


Es importante destacar que la función `gluPerspective()` define la perspectiva de la escena, pero no afecta la posición o la orientación del objeto en el espacio tridimensional. Para transformar el objeto en la escena, se debe utilizar una matriz de transformación adicional, como se muestra en el ejemplo.


```c++

// Definir la matriz de proyección

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluPerspective(60.0f, 1.0f, 0.1f, 100.0f);


// Definir la matriz de transformación

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

glTranslatef(0.0f, 0.0f, -5.0f);

glRotatef(45.0f, 0.0f, 1.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, se utiliza una matriz de transformación adicional para rotar el objeto en la escena. La rotación se realiza antes de dibujar el objeto utilizando la función `glRotatef()`.


En resmen, la perspectiva es una transformación tridimensional que se utiliza para simular la percepción humana de la profundidad en una escena. En OpenGL, se utiliza la función `gluPerspective()` para definir la perspectiva de la escena, y se deben especificar el ángulo de apertura, la relación de aspecto, la distancia del plano cercano y la distancia del plano lejano.


Es importante destacar que la perspectiva no afecta la posición o la orientación del objeto en el espacio tridimensional, sino que sólo afecta la forma en que se proyecta la escena en la pantalla. Para transformar el objeto en la escena, se deben utilizar matrices de transformación adicionales, como las que se han visto en los ejemplos anteriores.

Comentarios