1  Introducción

Para el diseño es conveniente emplear representaciones sencillas de curvas y superficies. Podríamos representar curvas polinómicas de grado n:

c(t) = a0+a1t+...+antn  ,       t ∊[0,1]  ,
donde cada coeficiente ai es un punto del plano o del espacio, según la curva sea plana o espacial.

Vídeo ¿Curvas polinómicas?

Esta representación no es muy práctica, ya que no nos da una idea clara del comportamiento de la curva.

canon

Por otra parte, si queremos observar la curva desde otro punto de vista, rotándola, trasladándola,... el comportamiento de los coeficientes es de lo más variopinto. Ejemplo.

Además, esta representación no es muy estable frente a pequeños cambios. Imaginemos que tenemos una parametrización con sólo coeficientes a0, a1 no nulos, es decir, la correspondiente a un segmento de una recta. Cualquier pequeña fluctuación daría lugar a coeficientes ai pequeños, pero no nulos. Y una curva de grado n es cualitativamente muy distinta de una recta. Ejemplo.

Por todo ello, parece conveniente emplear una representación distinta de las curvas polinómicas.

2  Curvas de Bézier

Vídeo de Curvas de Bézier.

Una base distinta para los polinomios de grado n nos la proporcionan los polinomios de Bernstein,

Bni(t): = (
n
i
)ti(1-t)n-i  ,       1 = n
Σ
i = 0 
Bni(t)  ,
(1)
donde Bni(t) es el polinomio i-ésimo de Bernstein de grado n. Presentan la ventaja de ser todos del mismo grado.
bernstein

Podremos representar las curvas polinómicas de grado n como combinación de estos polinomios

Bezier

c(t) = n
Σ
i = 0 
ciBni(t)  ,       t ∊ [0,1]  ,
(2)
donde todos los coeficientes ci son puntos del plano o del espacio afín, según la curva sea plana o espacial. A estos coeficientes los denominaremos vértices del polígono de control, {c0,...,cn}, de la curva de Bézier c(t). Una curva de grado n tiene, pues, un polígono de control de n+1 vértices.

2.1  Propiedades de las curvas de Bézier

Aunque hayamos definido la curva en el intervalo [0,1], es posible utilizar otros intervalos. Sólo hace falta transformar el intervalo para que la parametrización esté definida en el intervalo [a,b],

t(u) = u-a
b-a
  ,    u ∊ [a,b]  ,
de modo que u = a corresponde a t = 0 y u = b, a t = 1. La nueva parametrización será, pues,

~
c
 
(u) = c(t(u)): = c((u-a)/(b-a))  ,    u ∊ [a,b]  .

Nótese que la parametrización c(t) no ve el intervalo [a,b], sino el [0,1]. Es sólo un ajuste del usuario. Ejemplo.

Dos de los vértices del polígono de control tienen una interpretación inmediata. La curva pasa por los vértices c0, cn,

c(0) = c0  ,       c(1) = cn  .
De hecho, son los únicos vértices del polígono por los que pasa la curva. Ejemplo.

El nombre de polígono de control hace referencia a que sirve para controlar la forma de la curva. Sin embargo, ese control no es local, ya que, desplazando un vértice, se mueve toda la curva, aunque principalmente la parte más próxima al vértice en cuestión. Ejemplo.

La curva está contenida en la envolvente convexa del polígono de control. Así pues, como su nombre indica, el polígono nos proporciona una primera idea de por donde pasa la curva. Ejemplo.

Además, la transformación de la curva por una aplicación afín f, es sencilla, ya que

f(c(t)) = n
Σ
i = 0 
f(ci)Bni(t)  ,
la curva imagen tiene por polígono de control la imagen del polígono primitivo, {f(c0),..., f(cn)}. Por tanto, no es preciso calcular la imagen de cada punto para construir la curva imagen, sino sólo la imagen del polígono de control y recalcular la curva. Ejemplo.

Finalmente, las curvas de Bézier son simétricas. Si invertimos el polígono de control, {cn,...,c0}, la gráfica de la curva es la misma que la correspondiente a {c0,...,cn}, sólo que es recorrida en sentido inverso. Ejemplo.

3  Algoritmo de de Casteljau

Vídeo del Algoritmo de De Casteljau.

La manera tradicional de trazar las curvas de Bézier está basada en el algoritmo de de Casteljau.

El algoritmo de de Casteljau consiste simplemente en la aplicación reiterada de la interpolación al polígono de control de la curva de Bézier,

c1)i(t): = (1-t) ci+t ci+1  ,    i = 0,... , n-1  ,
(3)
de modo que en cada paso disminuye el número de vértices en una unidad,
cr)i(t): = (1-t) cr-1)i(t)+t cr-1)i+1(t)  ,    i = 0,... , n-r  ,    r = 1,..., n  ,
(4)
hasta llegar a un único punto en la iteración n-ésima. Ejemplo
casteljau

c(t) = cn)0(t)  .
(5)

Las ventajas del algoritmo de de Casteljau son su sencillez y el hecho de que involucra tan sólo sumas, ya que todos los términos son positivos. Ejemplo de parábola. Ejemplo de cúbica.

4  Polar de una parametrización

Una construcción muy útil basada en el algoritmo de de Casteljau es el blossom, que denominaremos polar de la parametrización, debido a que está relacionado con esta del mismo modo que una forma cuadrática con su forma bilineal asociada, también llamada polar.

La idea es la siguiente. En vez de interpolar siempre para el mismo valor de t en los n pasos del algoritmo, interpolamos en el valor t1 en el primer paso, en el valor t2 en el segundo, ... y en el valor tn en el último. Obtenemos así un punto que denotaremos c[t1,...,tn]. No se corresponde con ningún punto de la curva, salvo en el caso trivial en el que todos los ti son iguales.

Veámoslo con un ejemplo sencillo, el caso n = 2, para el polígono de control {c0,c1,c2}:

c[t1,t2]
: =
(1-t2)c1)0+t2c1)1
=
(1-t1)(1-t2)c0+{t1(1-t2)+t2(1-t1)}c1+ t1t2c2  .

La polar es simétrica, es decir, c[t1,t2] = c[t2,t1]. Este resultado se generaliza a curvas de grado n. Ejemplo

La polar permite reconstruir el polígono de la curva de Bézier.

c[0 < n-i > ,1 < i > ] = ci  ,       a < s > =

a,...,a
s veces 
  .
(6)
restrict

Es útil para restringir el intervalo de definición de una curva de Bézier, c(t), definida en el intervalo [0,1]. Conocemos el polígono de control {c0,...,cn} de la curva primitiva, pero no el de su restricción al intervalo [a,b] Ejemplo. Los vértices del polígono de control de la curva restringida serán

~
c
 

i 
= ~
c
 
[0 < n-i > ,1 < i > ] = c[a < n-i > ,b < i > ]  .
(7)

Ejemplo

4.1  Elevación del grado

Vídeo de Derivación y elevación del grado.

En algunos casos, nos puede interesar cambiar el grado de la curva para tener más grados de libertad a la hora de modificarla. La curva de grado n de polígono {c0,..., cn} y la curva de grado n+1 y polígono {c10,...,c1n+1} dado por

c1i = n+1-i
n+1
ci+ i
n+1
ci-1  ,
(8)
son la misma curva. Ejemplo Ejemplo.
eleva

Si iteramos el proceso de elevación del grado, esencialmente estamos "redondeando" el polígono de control, recortándole las esquinas. En el límite de infinitas elevaciones de grado, el polígono tiende a la forma de la curva, aunque no es un procedimiento eficiente para trazarla. Ejemplo

La elevación del grado no es la panacea universal para conseguir curvas más versátiles, ya que sabemos que los polinomios presentan mayor variación a medida que incrementamos el grado.

Otra propiedad es la disminución de la variación. Una recta r corta a una curva de Bézier, c(t), en a lo sumo tantos puntos como a su polígono de control, {c0,...,cn}. Ejemplo

El problema inverso, la disminución del grado, como es obvio, no tiene en general solución, ya que una curva de grado n+1 real no se puede expresar como una curva de grado n, pero se puede estudiar la mejor aproximación al problema de disminución del grado por mínimos cuadrados.

reduct

4.2  Derivadas

Vídeo de Derivación y elevación del grado.

La derivada de la parametrización de una curva de Bézier, es decir, el campo tangente a la curva, es

dc(t)
dt
= n n-1
Σ
i = 0 
ΔciBn-1i(t)  ,
(9)
definiendo el vector diferencia como Δci = ci+1-ci.

La derivada de una parametrización de Bézier de grado n es otra parametrización de Bézier de grado n-1 para una curva vectorial de polígono de control dado por {nΔc0,...,nΔcn-1}.

Como la curva pasa por los vértices inicial y final, tenemos que

dc(0)
dt
= nΔc0 = n(c1-c0),       dc(1)
dt
= nΔcn-1 = n(cn-cn-1)  ,
(10)
Las parejas de vértices iniciales y finales indican las tangentes en los extremos de la curva. Ejemplo

Esta expresión se puede generalizar a derivadas superiores por simple iteración:

drc(t)
dtr
= n!
(n-r)!
n-r
Σ
i = 0 
Δr ciBn-ri(t) = n!
(n-r)!
n-r-s
Σ
i = 0 
Δr cs)i(t)Bn-r-si(t)  ,
donde las diferencias de orden superior se definen de manera recurrente como Δsci = Δs-1ci+1- Δs-1ci.

Supongamos que deseamos enlazar dos curvas de Bézier de grado n, definidas en los intervalos adyacentes [u0,u1], [u1,u2], con polígonos respectivos {c0,..., cn}, {c'0,..., c'n}. Si la curva es continua, deberemos tener c(u1) = c'(u1), es decir, cn = c'0.

Si además queremos que la curva compuesta definida en el intervalo [u0,u2] tenga una parametrización de clase C1, es decir, con tangente continua, deberemos exigir:

Δcn-1
Δ0
= Δ c'0
Δ1
  ,
denotando Δ0 = u1-u0, Δ1 = u2-u1.

El grado n ha desaparecido por cancelación en la expresión. La condición sobre las derivadas de la parametrización se traduce en una condición sobre las diferencias de los vértices. Ejemplo

tangente

La condición para que la curva sea de clase Cr es fácil de deducir:

Δs cn-s
0)s
= Δs c'0
1)s
  ,    s = 0,..., r  .
(11)

5  Interpolación

Vídeo de Interpolación y aproximación de curvas.

Las curvas de Bézier pueden utilizarse para interpolar entre varios puntos, conocidos los valores que les corresponden del parámetro t. Supongamos que tenemos n+1 puntos {a0,...,an} y queremos obtener una curva c(t) definida en el intervalo [0,1] que verifique

c(t0) = a0  ,  ...     c(tn) = an  ,
para unos valores t0,..., tn del parámetro.
inter

Para resolver el problema de interpolación, debemos encontrar el polígono de control de la curva de grado n que verifique

n
Σ
i = 0 
ciBni(tj) = aj  ,       j = 0,..., n  ,
es decir, se trata de resolver el sistema lineal de n+1 ecuaciones
(
Bn0(t0)
...
Bnn(t0)
:
···
:
Bn0(tn)
...
Bnn(tn)
)(
c0
:
cn
) = (
a0
:
an
)  .

En notación matricial, nuestro sistema es BC = A, donde B es la matriz de los valores de los polinomios de Bernstein en t0,... ,tn, y C,A son las matrices cuyas filas son las componentes, respectivamente, de los vértices del polígono de control y de los datos del problema. La solución formal sería C = B-1A, aunque la manera eficiente de obtenerla será por algún algoritmo de resolución numérica. Ejemplo.

Finalmente, incluimos una pequeña aplicación de interpolación para poder comprobar lo estudiado hasta el momento.


Your browser cannot show this applet. You need to use a Java capable browser, such as Netscape 2.0. Here is a static image of the applet:

6  Aproximación

Vídeo de Interpolación y aproximación de curvas.

Es más interesante el caso en el que tenemos m+1 puntos y queremos obtener la curva de grado n que más se aproxime a nuestro conjunto de puntos por mínimos cuadrados.

inter

En vez de resolver el sistema BC = A, de m+1 ecuaciones y n+1 incógnitas, resolveremos el sistema BtBC = BtA, que es un sistema de n+1 ecuaciones y n+1 incógnitas. El problema tiene solución única. Ejemplo.


© Leonardo Fernández Jambrina