Una humilde introducción a la graficación por computadora

Page 215

9.4 Curvas de

Bézier

9.4.6. Ejemplos de implementación A continuación se presentan dos aplicaciones sencillas, ilustrativas de manipulación de curvas de Bézier que se incluyen en el material adjunto a este libro:

bezier1 y bezier2.

El primero permite manipular un solo segmento de Bézier, para familiarizarse con su naturaleza. El segundo permite manipular tres segmentos de Bézier encadenados.

bezier1 Los siguientes archivos presentan una implementación de segmentos independientes de Bézier:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Listing 9.7: Archivo de cabecera de operaciones de segmentos de Bézier

// / c09 / bezier / bezier1 . h # include < stdio .h > # define # define # define # define # define # define # define # define n" /*

BEZIER_COD_EXITO 0 BEZIER_MSG_EXITO " Éxito \ n " BEZIER_COD_ERROR_PARAMETROS -1 BEZIER_MSG_ERROR_PARAMETROS " Error de parámetro ( s ) \ n " BEZIER_COD_ERROR_DOMINIO -2 BEZIER_MSG_ERROR_DOMINIO " Error de dominio \ n" BEZIER_COD_ERROR_MEMORIA -3 BEZIER_MSG_ERROR_MEMORIA " Error de solicitud de memoria dinámica \

Contiene los cuatro puntos de control para los segmentos de Bezier . El cálculo de lo puntos internos del segmento es el siguiente : B ( t ) = Bx ( t ) ·i + By ( t ) ·j Bz ( t ) ·k , Bx ( t ) = (1 - t ) ^3 * x [0] + 3 t (1 - t ) ^2 * x [1] + 3t ^2(1 - t ) * x [2] + t ^3 * x [3] By ( t ) = (1 - t ) ^3 * y [0] + 3 t (1 - t ) ^2 * y [1] + 3t ^2(1 - t ) * y [2] + t ^3 * y [3] Bz ( t ) = (1 - t ) ^3 * z [0] + 3 t (1 - t ) ^2 * z [1] + 3t ^2(1 - t ) * z [2] + t ^3 * z [3] para 0 <= t <= 1

*/ typedef struct { // coordenadas de los cuatro nodos double x [4]; double y [4]; double z [4]; } segmentoBezier ;

215


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.