Está en la página 1de 43

Curvas de Bzier

Ing. Mitchell Paulo Blancas Nez

Historia
Las curvas de Bzier fueron difundidas en 1962
por el ingeniero francs Pierre Bzier, que las us
para disear carroceras de automvil. Sin
embargo, el estudio de estas curvas, fue
desarrollado en 1959 por el matemtico Paul de
Casteljau utilizando el algoritmo de Casteljau, un
mtodo numricamente estable para evaluar
curvas.

Curva de Bzier
Es una curva paramtrica utilizada con
frecuencia en grficos por ordenador y
campos relacionados. La generalizacin de la curva
de Bzier a dimensiones superiores se llama superficie de
Bzier, de los cuales el tringulo de Bzier es un caso de
especial importancia.

Propiedades de la curva de
Bzier
La curva comienza en el punto P0 y termina en el Pn-1. Esta
peculiaridad es llamada interpolacin del punto final.
La curva es un segmento recto si, y slo si, todos los puntos
de control estn alineados.
La curva de Bzier se encuentra en el interior de la
envolvente convexa de los puntos de control.
El control de la curva es global: Modificar un punto de
control implica modificar completamente la curva.

Aplicacin online sobre curvas


de Bzier:
http://jsdraw2d.jsfiction.com/demo/curvesbezier.h
tm

Aplicaciones

Grficos de ordenador (Adobe Illustrator,


CorelDraw e Inkscape).
Tipos de Letras (TrueType).
Animaciones por computadora.
Sntesis de sonido.

Anlisis de los casos para las C.


de Bzier

Anlisis de los casos para las C.


de Bzier

Generalizacin de la Curva de
Bzier

Generalizacin de la Curva de
Bzier

Generalizacin de la Curva de
Bzier

r ejemplo, una curva de orden cuatro (G= 4) quedara como:


n=3

Construccin de curvas de Bzier


mediante el Algoritmo de
Casteljau
Curvas
Lineales

Construccin de curvas de Bzier


mediante el Algoritmo de
Casteljau

Curvas
Cuadrticas

Construccin de curvas de Bzier


mediante el Algoritmo de
Casteljau
Curvas
Cbicas
Para curvas cbicas se pueden localizar puntos intermedios
Q0, Q1 y Q2 que describen las curvas lineales de Bzier y los
puntos R0 y R1 que describen las curvas cuadrticas:

Construccin de curvas de Bzier


mediante el Algoritmo de
Casteljau
Curvas de orden 4 a superior

Para curvas de grado 4, se pueden localizar los puntos


intermedios Q0, Q1, Q2 y Q3 que describen las curvas
lineales de Bzier, los puntos R0, R1 y R2 que describen las
curvas cuadrticas y los puntos S0 y S1 que describen las
curvas cbicas.

Ejemplo
Dados los puntos:
aplicar la construccin de una curva de Bzier
para hallar las ecuaciones y la grfica de la curva
sabiendo que t=0.1

Solucin
Puntos:
Curva cuadrtica:

Solucin
Puntos:
Curva cuadrtica:

Tabla:

Solucin
Grfic
a

Ejercicio

Dados los puntos:


(100,100), (200,400), (500,200),
(700,500)
aplicar la construccin de una curva de Bzier para hallar
las ecuaciones y la grfica de la curva sabiendo que t=0.1

Investigacin: Bzier 2D
recursivo
Grado G, donde n = G-1

Investigacin: Superficies de Bzier

Investigacin: Superficies de
Bzier en OpenGL

Bzier 2D
recursivo

Bzier 2D recursivo
.Inicialmente, dej P0, j sea Pj para j = 0, 1, ..., n . Es decir, P0, j es el j entrada-simo en la
columna 0. El clculo de entrada j en la columna i es la siguiente:

Pseudocodigo de Bzier 2D
recursivo
Ms precisamente, la entrada P es la suma de (1- T ) P (esquina superior izquierda)
i,j

i -1, j

y TPi -1, j 1 (esquina inferior izquierda). El resultado final ( esdecir , el punto en la curva)
es Pn , 0 . Sobre la base de esta idea, uno puede llegar de inmediato con el siguiente
procedimiento recursivo:

Este procedimiento parece sencillo y corto; sin embargo, es extremadamente ineficiente. He aqu
por qu. Comenzamos con una llamada a deCasteljau ( n , 0) para el clculo de Pn ,
0 . La otra parte se divide este llamado en dos llamadas ms, deCasteljau ( n -1,0) para el
clculo de Pn -1,0 y deCasteljau ( n -1,1) para el clculo de Pn -1,1 .

Propiedades de Bezier
1-El grado de la base de polinomios es uno
menos que la cantidad de puntos de
control.
2-El primer y ltimo punto de la curva
coincide con el primer y ltimo punto del
grafo de control.
3-El vector tangente en los extremos de la
curva tiene la misma direccin que el
primer y ltimo segmento del grafo de
control respectivamente.
4- Tienen control global.

Desventajas de las Curvas de Bezier


1- El grado de la base es elevado.
2- Tienden a suavizar demasiado la
geometra del grafo de control.
3- Se tornan insensibles a pequeos
cambios locales. El desplazamiento de un
slo punto de control casi no produce
efecto en la curva.
4-El control global provoca que el
desplazamiento de un slo punto de
control modifique a toda la curva.

Aplicaciones de las Curvas de Bezier


Las curvas de Bzier han sido ampliamente usadas en
los grficos generados por ordenador para modelado de curvas suaves.
Como la curva est completamente contenida en la envolvente convexa de
los puntos de control, dichos puntos pueden ser
suavizados grficamente sobre el rea de trabajo y usados para manipular la
curva de una forma muy intuitiva.

Superficies de Bzier
Se pueden utilizar dos conjuntos de curvas de Bzier para representar
superficies de objetos especificados por punto de control de entrada. La
funcin vectorial paramtrica de la superficie de Bzier se forma como el
producto cartesiano de las funciones de combinacin de Bzier:

ConPj,kque especifica las localidades de los (m + 1) por (n + 1)


puntos de control.

Pseudocodigo de la superficie de
bazier

El siguiente es un ejemplo con la superficie de Bzier dado mostrado. Los puntos de control
se muestran en blanco. Esta red de control tiene cuatro filas y cinco columnas y por lo tanto
es un grado (3,4) de superficie de Bzier. Para cada fila, las polilneas intermedios
utilizados para el clculo del algoritmo de de Casteljau se muestran en rojo. Los cuatro
puntos de control intermedios q0 , q1 , q2 y q3 se muestran en la figura. Las polilneas
intermedios utilizados para el clculo de esta aplicacin del algoritmo de de Casteljau se
muestran en azul y el ltimo punto p ( u , v ) en la superficie se muestra como una esfera
roja.

Superficies de Bzier en
OpenGL

Evaluators
Los Evaluators son primitivas sumisnistradas por OpenGL para
evaluacin polinomial de curvas y superficies de Bzier.
Los Evaluators de OpenGL nos permiten especificar una superficie
solo usando sus puntos de control, podemos crear superficies
compuestas por puntos, modelos de alambre (wireframe) o dibujar
modelos sombreados (shaded) ya que los vectores normales a la
superficie son calculados en forma automatica, y hasta superficies con
la aplicacion de Texturas.

El procedimiento para usar


evaluators es:
Especificar los puntos de
control
Definir el Evaluators
con glMap2f()
Activar el Evaluators
con glEnable()
Si uno desea costruir una
superficie wireframe
invocar glEvalCoord2() o
directamente
usar glMapGrid2() y glEval
Mesh2() para modelos
shading o con la aplicacion
de texturas.

Los puntos de control estn dados


de la siguiente forma
ctrlpoints[5][5][3].

[3]=(0,1,2) me indican las


coordenadas x, y, z de cada
punto.
[5]=(0,1,2,3,4) columnas,
j=0,1,2,3,4.
[5]=(0,1,2,3,4) filas,
i=0,1,2,3,4.

Definir el Evaluators
Usar glMap2f() para definir un Evaluator 2D de OpenGL.
Sintaxis: void glMap2f(GLenum target, TYPEu1, TYPEu2, GLint ustride, GLint uorder, TYPEv1,
TYPEv2, GLint vstride, GLint vorder, TYPE points);
En mi ejemplo tenemos:

glMap2f(GL_MAP2_VERTEX_3,0,1,3,5,0,1,15,5,&ctrlpoints[0][0][0])
GL_MAP2_VERTEX_3 = Tipo del punto de control, coordenadas x,y,z de los
vertices.
0 = el valor mas bajo del parametro u.
1 = el valor mas alto del parametro u.
5 = dimencion en la direccion u, en este caso 5.
3 = es el numero de datos por punto de control, en este caso 3 ya que
tenemos x,y,z.
0 = el valor mas chico de v
1 = el valor mas grande de v.
15 = distancia entre los puntos en ctrlpoints, en este caso 3*5 = 15.
5 = dimencion en la direccion v. &ctrlpoints[0][0][0]=es el array que
contiene los puntos de control.

Activar el Evaluators
Este se activa
con glEnable(GL_MAP2_VERTEX_3)
Tipo de superficie a dibujar
Con glMapGrid2f(20, 0.0, 1.0, 20, 0.0,
1.0), me crea una grilla con 20 puntos que
estan comprendidos entre 0.0 y 1.0, eso
para u y v.
Bueno con glEvalMesh2(GL_FILL, 0, 20,
0, 20) me dibuja la superficie en modo
shaded y con glEvalMesh2(GL_LINE, 0,
20, 0, 20) en modo wireframe (solo lineas).

Con glEnable(GL_AUTO_NORMAL) le indicamos que me calcule en forma


automtica las normales, para utilizar el modo de dibujo shaded y
con glEnable(GL_NORMALIZE) hace que estas normales estn normalizadas (es
decir vectores de modulo 1.0).

AUTORES:
-TAIPE LOPEZ ANDY
- PONCE IPARRAGUIRRE NOEMY