1  Introducción

Vídeo de Curvas racionales

Las curvas polinómicas constituyen una sencilla herramienta para el diseño. Sin embargo, adolecen de cierta rigidez, ya que los polinomios tienen propiedades muy definidas, como tener a lo sumo tantas raíces como el grado, lo que coarta sobremanera su flexibilidad. Vemos como ejemplo, cómo aproxima una cúbica cinco puntos sobre una sinusoide:

grado

La falta de flexibilidad de los polinomios también puede provocar, por contra, la aparición de tramos de elevada curvatura o con oscilaciones bruscas. Ejemplo.

grado

Por otra parte, el repertorio de curvas que pueden describirse exactamente por medio de parametrizaciones polinómicas es bastante limitado. El resultado de aproximar, por ejemplo, una circunferencia con tramos parabólicos no es siempre satisfactorio.

grado

Una posibilidad, que consideraremos en el siguiente tema, es trabajar con curvas polinómicas a trozos. Otra es emplear curvas racionales.

2  Curvas racionales

Definiremos las parametrizaciones racionales de grado n como aquellas cuyas componentes son cocientes de polinomios de grado n.

Consideremos una curva polinómica, (c0(t),c1(t),c2(t)), t∊[0,1], en R3 y que no pase por el origen. Sabemos que se proyecta sobre el plano afín con una parametrización (c1(t)/c0(t),c2(t)/c0(t)).

Descompondremos las coordenadas de los vértices en dos partes, ci = (wi,wici), donde wi es la primera componente del vértice i-ésimo y wici son las dos restantes (tres, si se tratara de una curva espacial). ci es precisamente la proyección de ci sobre el plano afín.

Estamos describiendo las curvas racionales por medio de un polígono de control {c0,...,cn} y unos parámetros, {wi,...,wn}, que denominaremos pesos.

proy

c(t) = ( n
Σ
i = 0 
wiBni(t), n
Σ
i = 0 
wiciBni(t))∊R3  ,    t∊ [0,1]  ,
c(t) =
n
Σ
i = 0 
wiciBni(t)

n
Σ
i = 0 
wiBni(t)
A2  ,    t∊[0,1]  .
(1)
grado

Si todos los pesos son iguales, w = wi, i = 0,...,n, el denominador desaparece y recuperamos una curva polinómica,

c(t) = n
Σ
i = 0 
ciBni(t)   ,
de polígono de control {c0,...,cn}.

La exigencia de seguir trabajando con términos positivos nos limita a valores positivos de los pesos. En el diseño rara vez se emplean pesos de órdenes de magnitud distintos del de la unidad. Aquí vemos lo que sucede si tomamos un peso negativo. La curva tiene poco que ver con el polígono de control y no respeta la envolvente convexa de este.

grado

La interpretación de los pesos es bastante sencilla. Si hacemos crecer uno de los pesos, wk, dejando fijos el resto, la curva tiende a acercarse al vértice, ck, correspondiente. Ejemplo Este efecto se puede emplear para incrementar la tensión de la curva. Ejemplo

Sin embargo, si multiplicamos todos los pesos por un mismo número, la cancelación entre numerador y denominador deja la curva invariable. Ejemplo

Este hecho se puede utilizar para normalizar los pesos, por ejemplo, de modo que el primer peso valga la unidad.

¿Qué sucede si uno de los vértices ci es un punto del infinito?

En este caso no tiene sentido hablar del peso wi, ya que la primera componente del vértice va a ser nula, ci = (0,ci). Su imagen en el afín es un vector, no un punto, por lo que lo denominaremos vector de control. Haciendo esta distinción, la expresión de una curva racional queda así:

c(t) =
n
Σ
puntos 
wiciBni(t) + n
Σ
vectores 
ciBni(t)

n
Σ
puntos 
wiBni(t)
  .
(2)
vector

La presencia de vectores de control es bastante molesta, ya que, al no ser ya (2) una combinación baricéntrica de puntos, no va a mantenerse la propiedad de la envolvente convexa, entre otras. Ejemplo

2.1  Propiedades de las curvas racionales

Muchas de las propiedades de las curvas de Bézier se trasladan a las curvas racionales de manera inmediata, ya que seguimos empleando combinaciones baricéntricas de los vértices del polígono de control.

Las propiedades que se derivaban de este hecho, tales como que la curva esté contenida en la envolvente convexa del polígono de control, la disminución de la variación o que sea invariante bajo transformaciones afines, se mantienen. Ejemplo

Otras propiedades, como pasar por los vértices c0, cn o ser simétrica, se cumplen también.

c(0) = c0  ,       c(1) = cn  .

Las curvas racionales son invariantes bajo transformaciones más generales, como son las transformaciones proyectivas. Si f es una transformación proyectiva del plano y {c0,...,cn}, {w0,...,wn} son el polígono de control y la lista de pesos de una parametrización racional, entonces

c(t) =
n
Σ
i = 0 
wiciBni(t)

n
Σ
i = 0 
wiBni(t)
  ,      f(c(t)) =
n
Σ
i = 0 
w'ic'iBni(t)

n
Σ
i = 0 
w'iBni(t)
  ,
(3)
donde los pesos y vértices de la nueva curva están relacionados con los primitivos, ci = (wi,wici), mediante la relación c'i = f(ci) = (w'i,w' ic'i). Estas transformaciones son especialmente útiles en el diseño, ya que incluyen los cambios de perspectiva. Ejemplo
proyectiva

Una transformación proyectiva de la recta convierte una parametrización racional de grado n, c(t), en otra parametrización racional del mismo grado para la misma curva, c(t(u)),

t(u) = cu+d
au+b
   .

Reparametrizaremos de modo que el intervalo final siga siendo el [0,1], lo cual se consigue con transformaciones de la forma

t(u) = u
(1-b)u+b
  ,    u∊[0,1]  ,
(4)
algo que no es posible con transformaciones afines.

Con estas transformaciones, la parametrización se altera de manera sencilla. El efecto se traduce en un cambio de pesos {w'0,...,w'n}, w'i = bn-iwi. manteniéndose el mismo polígono de control, {c0,...,cn}.

Existen varios juegos, infinitos, de pesos que proporcionan la misma curva racional. La gráfica no se altera, tan sólo la velocidad con la que se recorre la curva. Cuando b < 1, el efecto consiste en que la curva es recorrida más rápidamente al principio que al final. Cuando llegamos a u = 1/2, estamos más allá de t = 1/2 en la parametrización primitiva. Y al revés cuando b > 1. Ejemplo En la gráfica vemos t(u) para b=1/2, verde y b=2, rojo.

repar

Podemos emplear la libertad de escoger b para fijar el valor de un peso. Si tomamos b = (wn/w0)1/n, conseguimos que los pesos primero y último sean iguales, w'0 = wn = w' n.

Sin pérdida de generalidad, podemos fijar los pesos inicial y final de la curva y tomarlos iguales a la unidad, w0 = 1 = wn.

3  Cónicas

Vídeo de Cónicas

Las parametrizaciones racionales describen arcos de todo tipo de cónicas. Fijémonos en la parametrización normalizada, w0 = 1 = w2, w1 = w, de una curva racional de grado dos,

c(t) = (1-t)2c0+2wt(1-t)c1+t2c2
(1-t)2+2wt(1-t)+t2
  .

Considerando sólo pesos positivos, para 0 < w < 1 tenemos un arco de elipse. Para w = 1, tenemos un arco de parábola. Para w > 1, se trata de un arco de hipérbola. Ejemplo

Vídeo de Ejemplo de cónicas

Una sencilla construcción geométrica nos proporciona los vértices del polígono de control de un arco de circunferencia.

construc

A la vista de la figura, si situamos el centro en (0,0) y los extremos c0, c2 en (-Rsinα,Rcos α), (Rsinα,Rcosα), respectivamente, el vértice c1 estará en (0,R/cosα).

El valor del peso es w = cosα. Por ejemplo, para trazar un cuadrante de circunferencia, el peso toma el valor 21/2/2 y para un arco de 2π/3, el peso toma el valor 1/2.

proyectiva

El caso límite, media circunferencia, se puede trazar recurriendo a vectores de control, Ejemplo

c(t) = (1-t)2(-R,0)+2t(1-t)(0,R)+t2(R,0)
(1-t)2+t2
  ,    t∊[0,1]  .

4  Elevación del grado

Si multiplicamos numerador y denominador por una misma función f(t), la parametrización permanece invariable por cancelación, aunque las expresiones de ambos se alteran notablemente. Dado que nuestro propósito es elevar el grado en una unidad, escogeremos la función más general de grado uno,

w1i = α n+1-i
n+1
wi+ β i
n+1
wi-1  ,
w1ic1i = α n+1-i
n+1
wici+ β i
n+1
wi-1ci-1  ,
(5)
con lo cual tenemos infinitas maneras de elevar el grado de una parametrización racional, según los valores reales que tomen los parámetros α,β. Lo razonable es tomarlos positivos, para evitar la aparición de términos negativos. Ejemplo

Si tomamos α = 1 = β, recuperamos la fórmula de elevación del grado vista en el tema anterior.

El proceso de elevación del grado (5) no conmuta con las reparametrizaciones (4). Es decir, si elevamos el grado de una curva racional y luego la reparametrizamos, no obtenemos la misma parametrización que si reparametrizamos primero y luego elevamos el grado, tal como vemos en la figura.

proyectiva

5  Algoritmo de de Casteljau

Vídeo de Algoritmo de De Casteljau y derivación

El algoritmo de de Casteljau se generaliza a curvas racionales,

wr)i(t) = (1-t) wr-1)i(t)+t wr-1)i+1(t)  ,    i = 0,... , n-r  ,    r = 1,... , n  ,
cr)i(t) = (1-t) wr-1)i(t)
wr)i(t)
cr-1)i(t)+ t wr-1)i+1
wr)i(t)
cr-1)i+1(t)  ,
(6)
donde, obviamente w0)i = wi, c0)i = ci.

6  Derivadas

Vídeo de Algoritmo de De Casteljau y derivación

Si escribimos, para un polígono de control {c0,... ,cn}, y una lista de pesos, {w0,... ,wn},

p(t) = w(t) c(t)  ,    p(t): = n
Σ
i = 0 
wiciBni(t)  ,    w(t): = n
Σ
i = 0 
wiBni(t)  ,
la expresión de la derivada de un producto nos proporciona la derivada de la parametrización racional,

c'(t) = p'(t)
w(t)
- w'(t)
w(t)
c(t)  ,

cr)(t) = pr)(t)
w(t)
- 1
w(t)
r
Σ
i = 1 
(
n
i
) wi)(t)cr-i)(t)  .

Estas expresiones son harto complicadas, ya que involucran derivadas de orden inferior tanto del numerador como del denominador.

Por las fórmulas para las derivadas de parametrizaciones polinómicas,

c'(0) = n w1
w0
Δc0  ,       c'(1) = n wn-1
wn
Δcn-1  ,
(7)
con lo cual, en lo que respecta a la primera derivada, la única novedad es la aparición de los pesos de los extremos. Ejemplo
derivada

Si tenemos dos curvas racionales definidas por sus polígonos de control, {c0,... ,cn}, {c'0,... ,c'n}, y sus listas de pesos, {w0,... ,wn}, {w'0,...,w'n}, definidas en los respectivos intervalos [u0,u1], [u1,u2], la condición para que formen una única curva continua es

cn = c'0  ,
(8)
que es la misma que la estudiada para curvas de Bézier.

Dado que cn, c'0 son el mismo punto, parece lógico que impongamos wn = w'0.

Si además pretendemos que la parametrización sea de clase C1, deberemos exigir

wn-1 Δcn-1
Δu0
= w'1 Δc'0
Δu1
  .
(9)

A partir de la segunda derivada, las cosas se complican. Sin embargo, podemos aprovecharnos de la enorme libertad que ofrecen las parametrizaciones racionales para imponer una condición suficiente, aunque no necesaria, para que la parametrización de una curva compuesta sea de clase Cr.

Δs( wn-scn-s)
(Δu0)s
= Δs( w'0c'0)
( Δu1)s
  ,       Δs wn-s
(Δu0)s
= Δs w'0
(Δu1)s
  ,       s = 0,...,r  .
(10)

7  Interpolación y aproximación

Las curvas racionales aportan muchos grados de libertad adicionales a las curvas de Bézier, que podremos emplear para mejorar las soluciones de los problemas de interpolación y aproximación.

Podemos ver el problema racional como un problema polinómico en R3 en el que los datos son los valores c(ti) = ai, i = 0,...,m, donde ai = (vi,viai). Como los datos del problema son de la forma c(ti) = ai, quedan como parámetros libres los pesos de los puntos dato, vi, i = 0,...,m.

No existen algoritmos generales para determinar dichos pesos, así que deberemos considerarlos grados de libertad en el diseño, que nos permitirán mejorar las propiedades de la curva resultante. Ejemplo


© Leonardo Fernández Jambrina