Curvas de Bezier,B-Splines y NURBS

18
Antonio Casas Pérez ETS Arquitectura. UPM [email protected] Curvas de Bezier y Splines Hemos visto que dada una familia de n puntos el polinomio interpolador, esto es, el polinomio de menor grado cuya gráfica pasa por ellos era en general de grado n-1 y su obtención exigía resolver un sistema lineal de n ecuaciones con n incógnitas. Si quisiéramos diseñar una animación, por ejemplo exponer la gráfica de la curva cuando los puntos que la definen se están moviendo, el problema es grave pues para que el movimiento sea aceptable al ojo humano debemos conseguir al menos 24 imágenes por segundo, esto es, resolver 24 de estos sistemas cada segundo. Es posible mejorar la técnica para acortar sensiblemente el número de operaciones a realizar, véanse los Polinomios de Hermite, pero en todo caso subsiste el problema de que para conseguir ajustar con regularidad es preciso que en ocasiones la curva oscile apreciablemente entre dos puntos en los que tal vez se esperaba una forma mas suave. Otro problema es que cualquier variación de un solo punto cambia completamente el polinomio de interpolación. Piénsese lo corriente que son las pequeñas modificaciones en una obra. Si usamos polinomios interpoladores cualquier modificación obliga a repetir todo. Un tercer problema es la no invariancia del polinomio interpolador con las transformaciones afines y proyectivas, la sombra de un objeto es una de tales transformaciones. Sería deseable que para dibujar una sombra de la curva dada por el polinomio interpolador se hallasen las sombras de los puntos de interpolación y que la sombra buscada fuese el polinomio interpolador de tales puntos. Pues no, la sombra del polinomio de interpolación no es el polinomio de interpolación de las sombras, así nos vemos obligados para obtener sombras a proyectar un gran número de puntos. Para fijar ideas supongamos que se dan los cuatro puntos en el plano (0, 0), (1, 1), (2, 1.5), (3, 0.5). La poligonal que determinan éstos, es rápida de construir, no sufre grandes alteraciones cuando movemos ligeramente uno de ellos y tenemos por último la invariancia a afinidades y proyectividades.

Transcript of Curvas de Bezier,B-Splines y NURBS

Page 1: Curvas de Bezier,B-Splines y NURBS

Antonio Casas Pérez ETS Arquitectura. UPM [email protected]

Curvas de Bezier y Splines

Hemos visto que dada una familia de n puntos el polinomio interpolador, esto es, el polinomio de menor grado cuya gráfica pasa por ellos era en general de grado n-1 y su obtención exigía resolver un sistema lineal de n ecuaciones con n incógnitas. Si quisiéramos diseñar una animación, por ejemplo exponer la gráfica de la curva cuando los puntos que la definen se están moviendo, el problema es grave pues para que el movimiento sea aceptable al ojo humano debemos conseguir al menos 24 imágenes por segundo, esto es, resolver 24 de estos sistemas cada segundo.

Es posible mejorar la técnica para acortar sensiblemente el número de

operaciones a realizar, véanse los Polinomios de Hermite, pero en todo caso subsiste el problema de que para conseguir ajustar con regularidad es preciso que en ocasiones la curva oscile apreciablemente entre dos puntos en los que tal vez se esperaba una forma mas suave. Otro problema es que cualquier variación de un solo punto cambia completamente el polinomio de interpolación. Piénsese lo corriente que son las pequeñas modificaciones en una obra. Si usamos polinomios interpoladores cualquier modificación obliga a repetir todo.

Un tercer problema es la no invariancia del polinomio interpolador con las

transformaciones afines y proyectivas, la sombra de un objeto es una de tales transformaciones. Sería deseable que para dibujar una sombra de la curva dada por el polinomio interpolador se hallasen las sombras de los puntos de interpolación y que la sombra buscada fuese el polinomio interpolador de tales puntos. Pues no, la sombra del polinomio de interpolación no es el polinomio de interpolación de las sombras, así nos vemos obligados para obtener sombras a proyectar un gran número de puntos.

Para fijar ideas supongamos que se dan los cuatro puntos en el plano (0, 0),

(1, 1), (2, 1.5), (3, 0.5). La poligonal que determinan éstos, es rápida de construir, no sufre grandes alteraciones cuando movemos ligeramente uno de ellos y tenemos por último la invariancia a afinidades y proyectividades.

Page 2: Curvas de Bezier,B-Splines y NURBS
Page 3: Curvas de Bezier,B-Splines y NURBS

El gran ‘pero’ es la no suavidad de la curva poligonal. La angulosidad es estética en algún caso pero suele plantear muchos problemas, grietas en piscinas, trazado de circuitos de velocidad inaceptables, diseños poco aerodinámicos...

Una primera idea es eliminar los picos limándolos. Podemos, por ejemplo, hacer

la siguiente construcción iterativa: Tomamos el punto medio de cada lado de la poligonal y lo unimos con el del siguiente.

Page 4: Curvas de Bezier,B-Splines y NURBS

Al cabo de pocas iteraciones la curva obtenida tiene un aspecto bastante suave.

No obstante la suavidad es una ilusión óptica debida a la escala. En cada iteración se vuelve a obtener una poligonal, eso sí, con mas lados. Sólo en el límite se obtendría una curva sin puntos singulares, matemáticamente hablando. El problema es que la curva límite es el segmento rectilíneo que une los puntos inicial y final.

En 1966 Pierre Bezier, un ingeniero de Renault, desarrolla una teoría para

suavizar tales poligonales basándose en sucesivas aproximaciones mediante un tipo especial de polinomios, los Polinomios de Bernstein, introduce las llamadas Curvas de Bezier.

Varios años antes en 1959 Paul de Casteljau, un ingeniero de Citröen, ya había

desarrollado la misma teoría aunque desde un punto de vista mas gráfico y algorítmico. Los dos ingenieros de fábricas automovilísticas llegaron independientemente a la misma solución de un problema que era crucial en el diseño de carrocerías aerodinámicamente eficientes.

Las curvas solución del problema recibieron el nombre de Curvas de Bezier

pues, por una política diferente de Renault y Citröen sobre la propiedad industrial, fue Bezier el primero en publicar y divulgar sus resultados en la comunidad científica. No obstante se da el nombre de Algoritmo de Casteljau al algoritmo de tipo gráfico que genera las Curvas de Bezier.

La idea del Algoritmo de Casteljau es tomar un punto del primer segmento de la

poligonal y unirlo en línea recta con el punto del segmento siguiente situado en la misma posición relativa respecto a los extremos que tenía el primer punto tomado. Repetimos la operación con el nuevo punto y así hasta llegar al último segmento de la poligonal. En la figura que sigue se ha tomado un punto del segmento (0,0) – (1,1) situado a un tercio del distancia del inicio y dos tercios del final.

Page 5: Curvas de Bezier,B-Splines y NURBS
Page 6: Curvas de Bezier,B-Splines y NURBS

El punto señalado en color rosa se transforma en el punto dibujado en rojo después de dos iteraciones.

En la figura que sigue se han tomado en el segmento (0,0) – (1,1) los puntos que

resultan de dividirlo en 50 partes iguales y aplicar a cada uno de ellos el Algoritmo de Casteljau

La curva determinada por los puntos rojos es la curva de Bezier correspondiente

a los puntos iniciales dados. Evidentemente una vez que se fija un número de divisiones del primer intervalo,

lo que se obtiene, como en el caso de ‘limar los picos’, es una poligonal. A diferencia del caso anterior esta poligonal es una aproximación de una curva perfectamente suave que no es un segmento rectilíneo.

Para ver esto miremos la construcción desde un punto de vista analítico lo que

nos dará la curva de Bezier como combinación de los Polinomios de Bernstein y nos acercará al punto de vista de Pierre Bezier en su construcción.

Unas ecuaciones paramétricas del segmento rectilíneo que une los puntos Ai,

Ai+1 son Pi = Ai t + Ai+1 (1-t)

Cuando t varía entre 0 y 1 obtenemos todos los puntos del segmento AiAi+1 Si partimos de un punto del segmento A1A2 dado por un valor de t, la

construcción es la que sigue: Del segmento A1A2 se obtiene el punto P1 = A1 t + A2 (1-t) Del segmento A2A3 se obtiene el punto P2 = A2 t + A3 (1-t) Del segmento A3A4 se obtiene el punto P3 = A3 t + A4 (1-t) Tenemos en la primera iteración los segmentos P1P2 y P2P3

Page 7: Curvas de Bezier,B-Splines y NURBS

Del segmento P1P2 se obtiene el punto Q1 = P1 t + P2 (1-t) así resulta Q1 = A1 t2 + 2A2 (1-t)t + A3 (1-t)2 y análogamente Q2 = A2 t2 + 2A3 (1-t)t + A4 (1-t)2 Por último, del segmento Q1Q2 obtenemos el punto P = A1t3 + 3A2t2(1-t) + 3A3t(1-t)2 + A4(1-t)3 Al variar de 0 a 1 el punto P describe la Curva de Bezier asociada a los puntos

A1, A2, A3, A4. En la figura que sigue se dibuja la poligonal, la nube de puntos obtenidos aplicándoles el Algoritmo de Casteljau dividiendo el primer segmento en cinco partes. Se dibuja también dicha curva para poder observar cómo los puntos resultantes de aplicar el Algoritmo de Casteljau están en ella.

Obsérvese que los sumandos en la Curva de Bezier son los términos del

desarrollo de la potencia 3 del binomio [t + (1-t)]. Si el número de puntos iniciales fuese n en lugar de 4 el resultado sería análogo con la potencia n-1.

Los polinomios de grado n sumandos del desarrollo de [t + (1-t)]n son los

llamados Polinomios de Bernstein de orden n. La Curva de Bezier para los puntos A1,A2,....,An,An+1 viene dada como combinación lineal de los Polinomios de Bernstein.

En la práctica no es necesario trabajar con curvas que puedan derivarse

indefinidamente como ocurre con los polinomios. Basta obtener polinomios que se unan entre sí manteniendo comunes la primera y segunda derivada. Piénsese en términos dinámicos que esta condición equivale al diseño de una pista en la que no cambia la velocidad ni la aceleración al pasar por los empalmes.

Page 8: Curvas de Bezier,B-Splines y NURBS

Si trabajamos con Curvas de Bezier cuyo grado dependa del número de puntos que las controlan, no sólo aumentamos la complejidad de cálculos al aumentar el número de puntos y por tanto el grado, el problema se agrava todavía más pues la nueva Curva de Bezier que resulta al añadir mas puntos sólo tiene en común con la antigua los puntos inicial y final.

En la figura, la curva roja es la Curva de Bezier asociada a los puntos {A,B,C,D}, es un polinomio de grado 3. La curva azul es la Curva de Bezier asociada a los puntos {A,B,E,C,D}, es un polinomio de grado 4. Roja ↔ 3 2 2 3At 3 (1 ) 3 (1 ) (1 ) ; [0,1]Bt t Ct t D t t+ − + − + − ∈ Azul↔ 4 3 2 2 3 4At 4 (1 ) 6 (1 ) 4 (1 ) (1 ) ; [0,1]Bt t Et t Ct t D t t+ − + − + − + − ∈ El desarrollo de unas ecuaciones de ambas curvas en función de los Polinomios

de Bersntein explica la diferencia, cualquiera de los polinomios (1 )j kt t− tiene para (0,1)t∀ ∈ valor no nulo, esto es, su soporte no es un intervalo propio de [0,1] y por

tanto influye en el cómputo (0,1)t∀ ∈ . La clave para el comportamiento local de los B-Splines es que sean funciones

cuyo soporte sea un intervalo propio de [0,1]. Si se da una familia de 6 puntos, no buscaríamos la Curva de Bezier como

polinomio de grado 5 que se obtenga con los Polinomios de Bernstein de grado 5. En su lugar tomamos los 4 primeros puntos y determinamos el Polinomio de Bernstein de grado 3 que da su Curva de Bezier. Entre el punto 4º y el 5º añadimos convenientemente 2 puntos de forma que la Curva de Bezier grado 3 asociada a estos 4 puntos empalme con la anteriormente obtenida de forma que se mantengan la primera y segunda derivadas. Seguimos así hasta el punto 6º

Page 9: Curvas de Bezier,B-Splines y NURBS

En la figura, los puntos de partida son A, P1, P2, B, C, D. Con A, P1, P2,B

obtenemos el primer tramo. Para encontrar el segundo tramo añadimos convenientemente, es suficiente implementar sencillas operaciones de simetría, los puntos Sp2B y S. Estos 4 puntos dan el segundo tramo de forma que su unión con el primero sea C2 y así sucesivamente.

La curva obtenida como Curvas de Bezier que empalman con regularidad se

llama Spline. En el caso anterior Spline de orden 3 que es el mas usado. Además de la sencillez de cálculo, las Curvas Spline tienen la propiedad de que

la variación de uno de los puntos iniciales, sólo afecta a los tramos que se determinan con los puntos anterior y siguientes. Esto es, si modificamos la posición de un punto, nuestro diseño no se ve afectado completamente.

El empalme de Curvas de Bezier de grado 3 en los términos anteriores,

soluciona el problema de la adición de un quinto punto a un grupo de 4 si el punto añadido ocupa el quinto lugar en la lista. ¿Qué hacer cuando se desea añadir un quinto punto de forma que los extremos anteriores permanezcan?

Supongamos los puntos A,B,C,D y añadamos un quinto punto E. ¿Cómo

encontrar un spline de orden 3 para la lista A,B,E,C,D? En la figura que sigue se han dibujado en colores verde y azul los splines

cúbicos que corresponden respectivamente a las listas de puntos {A,B,E,C} y {B,E,C,D}.

Page 10: Curvas de Bezier,B-Splines y NURBS

El spline cúbico buscado (curva dibujada en rojo) debería encontrarse como una combinación de las curvas dibujadas en verde y azul

Recordemos que, analíticamente, las Curvas de Bezier son combinaciones de los

polinomios de Bersntein. Verde ↔ At3 + 3Bt2(1-t) + 3Et(1-t)2 + D(1-t)3 , t ∈ [0,1] (1) Azul ↔ Bt3 + 3Et2(1-t) + 3Ct(1-t)2 + D(1-t)3 , t ∈ [0,1] (2) Las expresiones anteriores describen cada una de ellas los puntos de una curva.

¿Cómo sería una expresión que describiese de una sola vez los puntos de las dos cuvas? En primer lugar cambiamos el parámetro de la curva Azul para que se mueva en

el intervalo [1,2] Azul ↔ B(t-1)3 + 3E(t-1)2(2-t) + 3C(t-1)(2-t)2 + D(2-t)3 , t ∈ [1,2] (3) La suma de las expresiones (1) (3) no representa al conjunto de las curvas Verde

y Azul pues las funciones t3,t2(1-t),t(1-t)2,(1-t)3 tienen valor no nulo en el intervalo [1,2] y lo mismo para (t-1)3,(t-1)2(2-t),(t-1)(2-t)2,(2-t)3 en [0,1]

Definamos las funciones de soporte compacto

310

[0,1]0t t

Nenotrocaso

∈=

211

(1 ) [0,1]0t t t

Nenotrocaso

− ∈=

Page 11: Curvas de Bezier,B-Splines y NURBS

212

(1 ) [0,1]0t t t

Nenotrocaso

− ∈=

3

13

(1 ) [0,1]0

t tN

enotrocaso − ∈

=

Y de manera análoga 2 2 2 2

0 1 2 3, , ,N N N N para [1,2]t∈ Podemos reescribir (1), (3) como Verde ↔ 1 1 1 1

0 1 2 33 3AN BN EN DN+ + + , t ∈ [0,1] (4) Azul ↔ 2 2 2 1

0 1 2 33 3BN EN CN DN+ + + , t ∈ [1,2] (5) Ahora las expresiones (4) y (5) sí son sumables y una expresión de la curva

formada por la unión de las gráficas Verde y Azul sería Verde ∪Azul ↔ 1 1 1 1 2 2 2 1

0 1 2 3 0 1 2 33 3 3 3AN BN EN DN BN EN CN DN+ + + + + + + , t ∈ [0,2] O mejor 1 2 3 4 5AM BM CM DM EM+ + + + , t ∈ [0,2] (6) Donde las funciones Mi tienen su soporte en los subintervalos que resultan de

dividir [0,2] en 5 partes iguales. La expresión (6) aporta un punto de vista diferente que nos va a permitir

generalizar el concepto de Curva de Bezier para adaptarlo a situaciones en los que se modifican puntos de control: Se añaden, se hace que no tengan todos la misma importancia, se limita el efecto de un punto del control a sus alrededores...

La expresión (6) presenta la curva asociada a la lista de puntos {A,B,C,D,E}

como combinación lineal de la funciones Mi, esto es, presenta el conjunto {M1, M2, M3, M4, M5} como una base que genera el espacio de funciones 'dirigidas' por los 5 puntos {A,B,C,D,E}. Llamaremos B-Splines (Splines básicos) a tales bases. También es usual llamar B-Splines a las curvas que se generan con tales bases.

Cómo ya se ha dicho, los B-Splines mas usuales son polinomios de grado 3 cuya

combinación lineal genera curvas que empalman con regularidad C2, esto es, continuidad hasta la segunda derivada.

Page 12: Curvas de Bezier,B-Splines y NURBS

Las Curvas de Bezier de grado 3 son caso particular de B-Splines de grado 3 y se producen cuando se parte de cuatro puntos y se les asocia las funciones de base t3,t2(1-t),t(1-t)2,(1-t)3 (Polinomios de Bersntein de grado 3).

Si examinamos la expresión 1 2 3 4 5AM BM CM DM EM+ + + + , t ∈ [0,1]

para un valor fijo de t , vemos que los puntos de la curva B-Spline asociada, se obtienen como una media ponderada de {A,B,C,D,E} siendo los coeficientes de ponderación los valores de Mi en t. Las funciones Mi deben constituir una partición de la unidad, esto es, deben sumar 1 [0,1]t∀ ∈ . Además, si el soporte de Mi es todo el intervalo [0,1], cada Mi influirá en el valor del B-Spline final [0,1]t∀ ∈ . Es pues conveniente que el soporte de cada Mi sea un subintervalo propio de [0,1].

Una base de B-Splines se obtendría dividiendo en intervalo [0,1] en partes

(iguales o no) t0,t1,.....,tn y definiendo sobre cada subintervalo [ti, ti+1] y sus adyacentes una función polinómica de grado 3 Mi de forma que {M1,M2,....,Mn} sea una partición de la unidad y la funciones 1 2 3 4 5M M M M Mα β γ δ φ+ + + + sean C2 en [0,1]

Cada división del intervalo [0,1] está asociada con la sucesión de puntos

0 10 ... 1nt t t≤ ≤ ≤ ≤ = llamada Vector de Nodos. El establecimiento de un determinado vector de nodos y una base de B-Splines

asociada conduce a la generación de los B-Splines dirigidos por familias de puntos cuyo cardinal sea menor o igual al del vector de nodos. Los puntos que generan cada B-Spline se llaman Puntos de Control.

Veamos un ejemplo. Se dan los 5 puntos {A,B,C,D,E} y vamos a construir el B-Spline de grado 1 que

los tiene como puntos de control (poligonal de vértices A,B,C,D,E) Tomemos las funciones de base

0

11 4 ; [0, ]4

10 ; [ ,1]4

t tN

t

− ∈= ∈

1

14 ; [0, ]4

1 12 4 ; [ , ]4 210 ; [ ,1]2

t t

N t t

t

∈= − ∈ ∈

Page 13: Curvas de Bezier,B-Splines y NURBS

........

........

4

30 ; [0, ]4

34 3 ; [ ,1]4

tN

t t

∈= − ∈

Las ecuaciones paramétricas AN0 + BN1+ CN2+ DN3+ EN4 dan la poligonal de

vértices A,B,C,D,E. Observemos que los B-Splines N1, N2, N3 tienen exactamente la misma forma y

que podemos obtener N2, N3 por una simple traslación de N1. Si definimos las funciones

Ni trasladando N1 por los pares de subintervalos contiguos de 1 1[0 ,1 ]4 4

− +

obtendremos también que AN0 + BN1+ CN2+ DN3+ EN4 [0,1]t∈ son unas ecuaciones paramétricas de la poligonal de vértices A,B,C,D,E.

Si reparametrizamos podemos mirar la poligonal A,B,C,D,E como el B-Spline

de grado 1 asociado a una base de B-Splines con vector de nodos [0, 1/6, 2/6, 3/6, 4/6, 5/6, 1] todos ellos con la misma forma (valor 1 en un nodo y 0 en los demás).

De la misma forma podemos razonar si los B-Splines de base son polinomios de

mayor grado. Lo único que debemos cuidar es que lo mismo que cada B-Spline lineal es clase C0, los B-Splines cuadráticos sean clase C1, los cúbicos C2... y su soporte sea un intervalo propio de [0-α,1+α]

B-Spline de grado 2 B-Spline de grado 3

De esta forma se tiene una amplia variedad de B-Splines: Según el vector de

nodos venga asociado a una división de [0,1] en subintervalos iguales o no (B-Splines Uniformes o No Uniformes), se repitan puntos en el vector de nodos, (B-Splines 'clamped'),...

El vector de nodos puede construirse como una partición del intervalo fijo [0,1]

o tomar un intervalo tal que los subintervalos que da el vector de nodos sean cómodos. Por ejemplo tomar el intervalo [0,5] y el vector de nodos {0,1,2,3,4,5} es mas agradable que tomar el intervalo [0,1] y el vector de nodos [0, 1/5, 2/5, 3/5, 4/5, 1]. Posteriormente, si se desea, se puede reparametrizar para que la variable t se mueva en el intervalo [0,1].

Una forma muy extendida para generar B-Splines es la construcción de la

funciones de base mediante el Algoritmo de Cox - de Boor.

Page 14: Curvas de Bezier,B-Splines y NURBS

En este las funciones de base se definen de forma recursiva: 0 0 0

0 1 2, , ,....N N N para B-Splines de orden 0, 1 1 1

0 1 2, , ,....N N N para B-Splines de orden 1, 2 2 20 1 2, , ,....N N N para B-

Splines de orden 2... En la forma: ( para fijar ideas dibujamos las gráficas que corresponden al vector de nodos {x0=0, x1=1, x2=2, ....} )

10 1 [ , )0

i ii

si t t tN

resto+∈

=

0

0N 01N 0

2N

0 0

1 2 1

1 2 1

( ) ( )i i i ii

i i i i

t x N x t NNx x x x

+ +

+ + +

− −= +

− −

En esta última fórmula, podemos tener denominadores 0 si se repite algún nodo.

En tal caso tomaremos como valor 0 el cociente 0/0. Las funciones 1

iN son de clase C0 y constituyen una partición de la unidad, esto

es, 1

1

01

n

iN−

=∑ .

A partir de las B-Splines de grado 1 1iN construimos las de grado 2 2

iN

1 1

2 3 1

2 3 1

( ) ( )i i i ii

i i i i

t x N x t NNx x x x

+ +

+ + +

− −= +

− −

Y de estas obtenemos las de grado 3 que son las que se usan mas ampliamente

2 2

3 4 1

3 4 1

( ) ( )i i i ii

i i i i

t x N x t NNx x x x

+ +

+ + +

− −= +

− −

Podemos adoptar otro punto de vista. Hasta ahora, si nos dan n puntos podemos

buscar la Curva B-Spline de grado 3 asociada. El procedimiento es biunívoco. Es lo mismo tener una Curva B-Spline que tener los puntos que la definen. Si se desea almacenar la curva en un ordenador basta con almacenar los n puntos que la definen si ésta es B-Spline. ¿Son todas las curvas del tipo B-Spline?. Obviamente no, pero si sólo

Page 15: Curvas de Bezier,B-Splines y NURBS

miramos su aspecto, ¿Podemos sustituir cualquier curva por un B-Spline de grado 3 tomando suficientes puntos de control?

Hay curvas que no son B-Splines. Además son formas lo suficientemente

simples como para no dejar de tratar este problema. Por ejemplo un círculo o una elipse no se pueden ver como curvas B-Spline de una nube de puntos.

En el ejemplo que describía la Curva de Bezier asociada a los puntos A1 = (0, 0),

A2= (1, 1), A3= (2, 1.5), A4 = (3, 0.5) obtuvimos como ecuación de ésta

P = A1t3 + 3A2t2(1-t) + 3A3t(1-t)2 + A4(1-t)3 Esto es, una combinación de los Polinomios de Bernstein cuyos coeficientes son los puntos A1, A2, A3, A4. Miremos esta expresión como

P = w1A1t3 + 3 w2A2t2(1-t) + 3 w3A3t(1-t)2 + w4A4(1-t)3 con los ‘pesos’ wi son iguales a 1. El hecho de que los pesos sean todos iguales nos viene a decir que todos los puntos tienen la misma importancia o de forma intuitiva, si miramos la Curva Spline como una curva en el plano que comienza en el primer punto, acaba en el último y los puntos centrales sirven para dirigir su forma como si fuesen imanes que cambian la forma del segmento rectilíneo que une el primer y último puntos, lo que hace la Curva Spline es obtener la forma de la curva suponiendo que los puntos de control son imanes que ejercen todos la misma fuerza.

Si ponemos el punto A3 interviene con un peso w3 mayor que w2 el resultado equivale a deformar mas la Curva Spline en la zona de influencia de A3.

De forma análoga podemos razonar con B-Splines. Estableciendo no sólo puntos de control sino pesos en los mismos se llega a una

amplia variedad de curvas, que incluyen formas usuales como elipses y circunferencias, que reciben el nombre de NURBS ( Non uniform rational B-Splines ). Programas de

Page 16: Curvas de Bezier,B-Splines y NURBS

CAD como Rhinoceros utilizan esta forma de representar y manejar curvas y superficies.

Page 17: Curvas de Bezier,B-Splines y NURBS

En la figura que sigue se han dado los puntos A = (0,1) , B = (1,1) y C = (1,0) para conseguir una Curva de Bezier con los Polinomios de Bersntein que ajuste un cuarto de la circunferencia unidad.

La curva dibujada en rojo es el la Curva de Bezier de segundo orden At2 + 2Bt(1-t) + C(1-t)2 La curva azul se obtiene con un peso 0.85 < 1 en el segundo sumando, la rosa con un peso 1.2 > 1. La curva verde es el circulo unidad.

Si en lugar de puntos y curvas en un plano hubiésemos tratado con puntos y curvas en R3 los resultados serían idénticos, esto es, Curvas de Bezier, B-Splines y NURBS en R3 tienen el mismo tratamiento.

Page 18: Curvas de Bezier,B-Splines y NURBS