domingo, 6 de mayo de 2012

CURVAS Y SUPERFICIES 05/05/2012

Curvas y superficies en 2D y 3D
Índice
•Curvas en 2D y 3D
–Introducción
–Interpolación lineal
–Curvas de Bezier
–Curvas Spline
–Curvas B-Spline
•Superficies en 3D
–Interpolación bilineal
–Parches bicúbicos
Introducción
•Representación paramétrica vs implícita o explícita
–paramétrica es más flexible
–curvas componentes: C(t) = (x(t), y(t))
•Interpolación vs. aproximación: puntos de control
–interpolación: curva ha de pasar por una serie de puntos (importancia de los puntos)
–aproximación: curva según unos puntos de control (importancia de curva)
•Propiedades deseables:
–representación paramétrica
–suave: Cn, en curvas componentes
–sin oscilaciones (wiggles)
–local: cambio de un punto afecta a entorno reducido
–fácil de calcular: poco coste computacional

Interpolación lineal
•Dado un conjunto de puntos se interpolan usando rectas entre ellos.
•Sencillo.
•La curva es continua pero no sus derivadas.
•Curva local: la modificación de un punto afecta a dos intervalos.



Interpolación lineal



Entre dos puntos se define
una línea recta.
X(t) = mx t + bx
Con las condiciones
X(t=0) = X0
X(t=1) = X1
Para el primer intervalo y la primera coordenada.
Curvas de Bezier

  • •       Es un sistema desarrollado hacia los años setenta del siglo XX, para el trazado de dibujos técnicos, en el diseño aeronáutico y de automóviles. Su denominación es en honor a Pierre Bezier quien ideó un método de descripción matemática de las curvas que se comenzó a utilizar con éxito en los programas de CAD.
    •       Posteriormente, los inventores del PostScript, introdujeron en ese código el método de Bezier para la generación del código de las curvas y los trazados.

     •       Se denomina curva Bézier asociada a (n + 1) puntos P0, P1,...,Pn a la curva parametrizada, definida para t∈[0,1], cuyos puntos vienen dados mediante la siguiente expresión
    •  



















         en la que los Bi,n(t) son los polinomios de Bernstein de grado n.
    •       Los puntos P0, P1, ..., Pn que determinan una curva de Bézier se denominan puntos de control, y la poligonal que los une es el polígono Bézier o B-polígono.
     •       Los polinomios de Bernstein de grado n, que denotamos por B0,n(t), B1,n(t), ..., Bn,n(t), son

    •       B0,1(t) = (1 - t), B1,1(t) = t;
    •       B0,2(t) = (1-t)2, B1,2(t) = 2(1-t)t, B2,2(t) = t2;
    •       B0,3(t) = (1-t)3, B1,3(t) = 3(1-t)2t, B2,3(t) = 3(1-t)t2, B3,3(t) = t3.
    •       A medida que aumenta el número de puntos, aumenta el grado de la curva.
    •       Se limita a 4 el numero de puntos de control y el polinomio es de grado 3.
     •       Dibujamos una curva:
    •       Dados los puntos P0=(1, 1), P1=(2, 4), P2=(5, 3), la curva Bézier asociada tiene las siguientes ecuaciones paramétricas
    •       x(t) = B0,2(t) + 2B1,2(t) + 5B2,2(t) = 1+2t+2t2
    •       y(t) = B0,2(t) + 4B1,2(t) + 3B2,2(t) = 1+6t-4t2



•       La curva de Bezier empieza en P0 y termina en Pn-1
•       El vector tangente a la curva P(t) en el punto P0 tiene la dirección del vector P0P1
•       El vector tangente a la curva P(t) en el punto Pn tiene la dirección del vector Pn-1Pn.
•       La modificación de un punto de control afecta a toda la curva que define.
Splines Cúbicos
•       Interpolan entre dos puntos utilizando un polinomio de grado 3
•       Los polinomios de grado 3 son los de menor grado que permiten la existencia de un punto de inflexión.
•       Intentan evitar oscilaciones y complejidad de interpolación polinómica, al aumentar el número de puntos
•       Si el polinomio es de grado m, 3 en este caso, se puede imponer que la curva global sea continua hasta el orden m-1 (Cm-1), en este caso: grado 2. Es decir, podemos imponer que sea continua la curva, la primera y la segunda derivada, es decir, curvas suaves.
 Splines Cúbicos
•       Spline cúbico (x(u), y(u)) que pasa por los n+1 puntos P0, P1, ... Pn para los valores del parámetro {u0, u1, ... un}
•       Se buscan n polinomios cúbicos (grado 3) para cada coordenada, (qi(u), pi(u)), definidos en intevalo [ui,ui+1] , que empalmen con continuidad C2 (2ª derivada) en cada valor del parámetro ui
•       Condiciones: 2n + n-1 + n-1 = 4n-2
qi(ui) = xi ; qi(ui+1) = xi+1 i=0,1,...,n-1 2n condiciones Continuidad curva
•       qi'(ui+1) = qi+1'(ui+1)i=0,1,...,n-2   n-1 condiciones Cont. prim. Deriv.
•       qi''(ui+1) = qi+1''(ui+1)i=0,1,...n-2   n-1 condiciones Cont. Seg. Deriv.
•       Incógnitas: 4n
qi(u) = ai + biu + ciu2 + diu3
•       Faltan 2 condiciones extra
 •       Natural Cubic Splines:
–     Condiciones extra: derivada segunda nula en los extremos, u0 , un
 Splines cúbicos
•       Curva interpolante, con segmentos polinómicos (curvas componentes)
•       Representación paramétrica
•       Suave: C2 (curvas componentes)
•       Sin oscilaciones: grado cúbico de los polinomios evita oscilaciones
•       No local: el cambio de un punto afecta a los polinomios de todos segmentos (ver el sistema (n+1) x (n+1))
•       Relativamente fácil de calcular: el sistema de ecuaciones es tridiagonal
•       Se ha sacrificado la suavidad (no mucho) para evitar las oscilaciones
•       Para hacer las curvas locales, hay que eliminar el requerimiento de que interpole
 Curvas B Spline

•Caso más general que Bezier.

  Las curvas de Bezier son un tipo de B-Splines.
•Ventaja sobre Bezier: los puntos de control no se alejan tanto de la forma que queremos modelar, por lo que podemos asemejarnos más al modelo sin necesidad de utilizar muchos puntos de control.
•
•Propiedades:
–Envolvente convexa.
–Invarianza afín.
–Control local.
•       Igual que Bézier, dado un conjunto de puntos P0, ., Pn, determinamos una curva compuesta de varios tramos, tal que se aproxime al polígono de control, y que las ecuaciones de cada tramo estén influenciadas solamente por k vértices del polígono de control siendo k un parámetro elegido a voluntad por el diseñador y, lógicamente, k ≤ n + 1
 Curvas B Spline
•       Obsérvese que hay que definir un vector T de nodos, que suele ser un conjunto de números naturales separados por una unidad (aunque puede hacer cualquier otra elección).
 Propiedades
•        No interpolan
•       Paramétricas
•       Suavidad Cm-2: m es orden de B-spline
•       No oscilan
•       Locales
•       Difíciles de calcular salvo casos especiales con fórmula matricial: B-Splines uniformes, Bézier
•       Mayor flexibilidad: elección de nodos permite más tipos de curvas
 Calculo de B splines
•http://www.pdipas.us.es/e/esplebrue/ampcap5a_0506.pdf
Polinomios de Hermite
•       Se busca una función de interpolación Hn(x) que sea cúbica en cada subintervalo y que interpole a la curva y a su primera derivada en los puntos que introduce el usuario.
•       La función Hn(x) queda determinada en forma única por estas condiciones y su cálculo requiere de la solución de n sistemas lineales de tamaño 4x4 cada uno.
•       La desventaja de la interpolación de Hermite es que requiere de la disponibilidad de las primeras derivadas, lo cual no es el caso en muchas aplicaciones.
 Polinomios de Hermite
•       Para cada bintervalo entre dos puntos que introduce el usuario ( p0 y p1 ) con tangente en el punto inicial m0 y en el punto final m1, el polinomio se define como:


•       donde t ∈ [0, 1].
•       Observese que en el polinomio aparecen los valores de p y m.
Polinomios de Hermite
•       Como cada subintervalo comparte tangentes copn los vecinos hay varias técnicas para definir los valores de las tangentes.
–     Cardinal spline
–     Catmull-Rom spline
–     Kochanek-Bartels spline
 Polinomios de Hermite
•       En Informática Gráfica los más utilizados son los  splines de Catmull-Rom.Sobre todo cuando lo que se desea es interpolar movimiento de forma suave entre varios frames. Por ejemplo cuando la cámara se está moviendo y tenemos unos frames clave y queremos interpolar el movimiento entre ellos.
•       La ventaja es que es fácil de calcular, garantizan la posicion en los frames clave (es una interpolacion) y garantizan que la tangente de la curva generada es contínua a lo largo de múltiples segmentos.
 •       Dados (n+1) puntos p0, ..., pn, para interpolarlos con n segmentos de curva de tipo polinomios cúbicos de Hermite se divide la curva global en intervalos cada uno de los cuales empieza en un punto pi y termina en pi+1 siendo la tangente inicial mi y la final mi+1 y se definen las tangentes por medio de la fórmula:
•        
Nota: debo definir m0 y m


 Demo
•       Saltos en el ejemplo cuando la interpolación del movimiento es lineal, movimiento suave en la interpolación de catmull-rom. Obtenido de http://www.mvps.org/directx/articles/catmull/
 Superficies 3D. Interpolación Bilineal
•       La interpolación bilineal calcula los puntos intermedios mediante la siguiente ecuación:
•       V (x, y) = ax +by+cxy+ d
•       donde x e y representan la distancia al punto o esquina superior izquierda del entorno.
•       Los coeficientes a,b,c,d deben calcularse de modo que se cumplan las siguientes igualdades:
•       V(x = 0,y = 0) = P(i, j)
•       V(x=1,y=0) = P(i+1, j)
•       V(x = 0,y = 1) = P(i, j + 1)
•       V(x=1,y=1) = P(i + 1, j + 1)
 Superficies en 3D
•Concepto de parche (patch)
Superficie como curva con puntos de control en una curva
•Funciones base son producto de funciones base de curvas: bij(s,t)=bi(s)bj(t)
•Matriz (malla) mxn de puntos de control: Pij, i=0,....m; j=0,...n





Conclusiones
•NURBS > B-Splines > Bezier.
•
•Todos estos métodos son ayudas para el modelado, pero en el renderizado la GPU siempre va a utilizar triángulos.
•
•El diseñador gráfico puede modelar formas curvas con facilidad y de forma intuitiva, y a la hora de renderizar se aplicará un algoritmo de subdivisión para convertir todo en triángulos.







No hay comentarios:

Publicar un comentario