2.3. Trazo de líneas curvas. | Graficacion OpenGL C++

 En OpenGL, es posible trazar líneas curvas utilizando una técnica llamada curvas de Bézier. Las curvas de Bézier son curvas suaves que se definen mediante puntos de control que indican la dirección y la forma de la curva.


En OpenGL, las curvas de Bézier se trazan utilizando la función `glMap1f()` y la función `glEvalCoord1f()`. La función `glMap1f()` se utiliza para definir una curva de Bézier con un número determinado de puntos de control, y la función `glEvalCoord1f()` se utiliza para evaluar la curva en puntos específicos a lo largo de la curva.


El siguiente ejemplo muestra cómo trazar una curva de Bézier con cuatro puntos de control:


```c++

GLfloat ctrlpoints[] = {

    -4.0f, 0.0f, 0.0f,

    -2.0f, 4.0f, 0.0f,

     2.0f,-4.0f, 0.0f,

     4.0f, 0.0f, 0.0f

};


glMap1f(GL_MAP1_VERTEX_3, 0.0f, 1.0f, 3, 4, ctrlpoints);

glEnable(GL_MAP1_VERTEX_3);


glBegin(GL_LINE_STRIP);

for (int i = 0; i <= 30; i++) {

    glEvalCoord1f((GLfloat) i / 30.0f);

}

glEnd();

```


En este ejemplo, primero se definen los puntos de control de la curva de Bézier en el arreglo `ctrlpoints`. Luego se llama a la función `glMap1f()` para definir la curva de Bézier con tres componentes de vértice (x, y, z), un rango de parámetros de 0 a 1, tres puntos de control por segmento y cuatro puntos de control en total. Se habilita la evaluación de la curva con `glEnable(GL_MAP1_VERTEX_3)`.


Después, se dibuja la curva de Bézier con la función `glBegin(GL_LINE_STRIP)` para comenzar a dibujar la línea continua de la curva. Se evalúa la curva en 30 puntos igualmente espaciados a lo largo de la curva mediante la función `glEvalCoord1f()`, y se dibuja la línea continua de la curva con `glEnd()`.


En resumen, las curvas de Bézier se utilizan para trazar líneas curvas suaves en OpenGL, y se definen mediante puntos de control que indican la dirección y la forma de la curva. Las funciones `glMap1f()` y `glEvalCoord1f()` se utilizan para definir y evaluar la curva de Bézier, y se pueden dibujar con la función `glBegin(GL_LINE_STRIP)` y `glEnd()`.

Comentarios