Diseño Geométrico por Computadora

Anuncio
Diseño Geométrico por Computadora
De la Visión al Diseño
M. Sirvent
Departamento de Ingeniería y Ciencias, Tecnológico de Monterrey, Campus León, León,
Gto. 37160, México, [email protected]
Resumen. El profesor Gerald Farin de la universidad del estado de Arizona dijo acertadamente que la
decisión de usar computadoras en el proceso de diseño automáticamente obliga al diseñador a describir las
formas en términos matemáticos. Cuando una curva o una superficie se representa matemáticamente, como se
hace en el diseño geométrico por computadoras, una manera eficiente de hacerlo es utilizando splines. En este
artículo daremos una introducción a estos objetos llamados splines, a las matemáticas atrás de ellos y algunas
de sus interesantes aplicaciones.
1. Introducción
Anteriormente, para diseñar objetos, algo que se solía hacer era modelar con arcilla y se experimentaba hasta
tener algo que se aproximara a lo que teníamos en mente, otra cosa que se hacía era utilizar plantillas tanto
para modelar algo que ya existía como para generar nuevos diseños. El estudio de los splines comenzó
alrededor de 1940, aplicaciones prácticas realmente empezaron hasta más tarde, cuando las computadoras se
hicieron lo suficientemente eficientes y rápidas, a partir de ese momento, se convirtieron en una herramienta
imprescindible.
El problema principal para el diseño consistía en elaborar algoritmos que resolvieran lo siguiente:
Dados un cierto número de puntos, encontrar una curva suave, que pase por esos puntos dados, o si no pasa
por ellos, que aproxime a los datos dados.
Varios matemáticos e ingenieros trabajaron y ofrecieron soluciones a este problema, por mencionar a algunos
de ellos, tenemos: en Estados Unidos se encontraba el diseñador James Ferguson. Ferguson trabajaba en la
industria aeronáutica como diseñador de aviones. En Francia el ingeniero Paul De Casteljau desarrolló un
algoritmo, conocido como el algoritmo de De Casteljau, el cual es fundamental en esta área de diseño de
curvas, es un algoritmo sencillo y poderoso. De Casteljau desarrolló este algoritmo en 1959 cuando trabajaba
en Citroen, pero no se conoció su trabajo hasta años mas tarde, cuando Boehm obtuvo copias de sus reportes
en 1975. Pierre Bézier, matemático e ingeniero francés también hizo grandes aportaciones al respecto, el
trabajaba en la Renault. El trabajo de Ferguson precedió al de De Casteljau y al de Bézier, así como el de De
Casteljau precedió al de Bézier, ninguno de ellos conocía el trabajo de los otros, debido a que las industrias en
las que trabajaban, tenían estos resultados como secretos industriales. Los trabajos se publicaron hasta más
tarde.
2. ¿Qué tienen en común las siguientes situaciones? :
2.1 Problemas de Planteo. Usualmente los problemas de planteo que nos encontramos en los libros de texto
son un poco artificiales, empiezan con una historia en la que quizá tengamos que maximizar utilidades,
minimizar costos, minimizar cantidad de material, maximizar volumen, etc., después de la poesía, nos dan la
función, y listo, empezamos con nuestro proceso. En la vida real, por lo general la función no va a estar dada,
tendremos datos discretos, entonces la pregunta natural surge: dados n puntos, cómo encontrar una función
que pase por ellos, o que aproxime a los datos dados.
2.2 Impresoras láser. Cuando imprimimos en una impresora láser un texto que hemos escrito usando una
computadora, por lo general lo hacemos sin cuestionarnos como se logra la comunicación de la computadora
a la impresora, de tal manera, que los símbolos que hemos usado se reproduzcan fielmente en la impresión.
Si las letras se guardan como una sucesión de pixeles, uno de los problemas con los que uno se encuentra, es
que al querer cambiarle el tamaño, la letra se distorsiona, una mejor manera, es guardar cada letra como una
sucesión de curvas, es decir, dada una letra, se divide en varios pedazos y entonces, dados n puntos, se
encuentra una curva suave que aproxima a esos puntos, cada letra es guardada como una sucesión de curvas,
la impresora usa un lenguaje gráfico, como por ejemplo PostScript, que es un lenguaje orientado a objetos
para leer estas sucesiones de curvas y reproducirlas de manera suave.
2.3 El Perfil de un automóvil o de las alas de un avión. Para el diseño del perfil de un automóvil o el de las
alas de un avión, el poder modelarlos en una computadora ha sido de gran utilidad, podemos variar nuestro
modelo, agrandarlo, reducirlo, rotarlo, trasladarlo, hacer cambios locales, en fin, tenemos más flexibilidad en
el diseño y además de que el resultado es bueno, el costo es bajo. Para lograr estos diseños, uno se pregunta,
dados n puntos, ahora quizá en el espacio, como encontrar una superficie que pase o aproxime a los datos
dados.
2.4 Creando animaciones. Al ver la película “terminator 2”, uno llega al cine pensando en ver simplemente
la segunda parte de una película que algunos de nosotros consideramos buena, y nos llevamos una grata
sorpresa, al darnos cuenta de que la película no solamente es otra vez interesante, sino que además nos
impresionamos con los efectos especiales, el ver como una forma se transforma en otra, ahí delante de
nosotros, en la pantalla y de manera bastante suave, es algo fantástico, entonces uno se pregunta en cómo esto
se ha podido lograr, es decir, dadas dos formas, diferentes entre sí, como encontrar una sucesión de
transformaciones suaves que nos lleven de una forma a la otra, algo que uno quizá pueda hacer, por supuesto
hablando a muy grandes rasgos es, guardar cada una de las formas originales como una sucesión de curvas o
superficies, y entonces transformar una en la otra mediante una sucesión de formas de tal manera que cada
punto transformado realice una curva suave.
Cada una de las situaciones presentadas, tienen en común que su solución utiliza curvas y superficies
conocidas como Splines. Nosotros nos centraremos en la parte de curvas. Para definir Splines, primero
hablaremos del algoritmo de De Casteljau y curvas de Bézier y entonces estaremos listos para definir lo que
es un Spline.
3. Algoritmo de De Casteljau:
Dados
b0 , b1 ,...,bn  R 3 y t  R definimos:
bi (t )  (1  t )bi
r
r 1
r 1
(t )  tbi1 (t )
r  1,...,n ; i  0,...,n  r
bi (t )  bi
0
Entonces
n
b0 (t ) es el punto con valor paramétrico t que está en la curva b n
A la curva generada con este algoritmo se le conoce como curva de Bézier.
(3.1)
A los puntos
b0 , b1 ,...,bn se les denomina puntos de control y al polígono formado por ellos, el polígono de
control de la curva.
A continuación se da un ejemplo de cómo generar una curva de Bézier de grado tres, tanto de manera
algebraica como de manera geométrica:
3.1 Curva de Bézier de grado 3. Forma algebraica:
Dados
b0 , b1 , b2 , b3 , encontrar la curva de grado 3 que generan estos puntos de control:
Aplicando el algoritmo de De Casteljau, obtenemos:
b0 (t )  (1  t )b0  tb1
1
b1 (t )  (1  t )b1  tb2
1
b2 (t )  (1  t )b2  tb3
1
b0 (t )  (1  t )b0  tb11
2
1
b12 (t )  (1  t )b11  tb21
b03 (t )  (1  t )b02 (t )  tb12 (t )
Insertando las dos primeras ecuaciones en la cuarta y la segunda y la tercera en la quinta, obtenemos:
b02 (t )  (1  t ) 2 b0  2(1  t )tb1  t 2 b2
b12 (t )  (1  t ) 2 b1  2(1  t )(t )b2  t 2 b3
3
Ahora insertando estas dos ecuaciones en la ecuación para b0 (t ) nos queda:
b03 (t )  (1  t ) 3 b0  3(1  t ) 2 tb1  3(1  t )t 2b2  t 3b3
Por lo tanto la curva que hemos obtenido es un polinomio de grado 3 en la variable t. En otras palabras, esta
es la curva de Bézier de grado tres generada por los cuatro puntos de control dados.
3.2 Curva de Bézier de grado 3. Forma geométrica:
El punto
b03 (t ) está en la curva de Bézier, variando el valor de t, obtenemos todos los puntos de la curva.
n
En general, no es difícil demostrar, que dados n+1 puntos de control, la curva de Bézier b generada usando
el algoritmo de De Casteljau es un polinomio en la variable t de grado n.
La curva de Bézier interpola al primer y último puntos de control, no interpola a los demás, pero la curva
queda dentro de la envolvente convexa definida por el polígono de control, además la curva imita la forma de
este polígono. Esta es una herramienta poderosa para diseñar curvas en general, lo que tenemos que hacer, es
dar puntos de control que imiten la forma de la curva que queremos obtener.
4. Polinomios de Bernstein:
Es conveniente para el análisis teórico y también práctico, proporcionar una base para las curvas de Bézier. Es
decir, una representación explícita de estas curvas. Una base natural son los polinomios de Bernstein.
 n
Bin (t )   t i (1  t ) ni
i 
No es difícil demostrar que la curva de Bézier de grado n se puede expresar como sigue:
n
b n (t )   b nj B j (t )
j 0
5. Splines
Si la curva que queremos reproducir es un poco compleja, lo más seguro es que necesitemos una curva de
Bézier de grado grande, pero eso no es recomendable, ya que un polinomio de grado alto suele tener
oscilaciones, por lo que entonces conviene hacer uso de lo que se conoce como Splines, es decir, curvas que
son polinomios por pedazos (curvas de Bézier) y que sean globalmente un cierto números de veces
diferenciable. Es decir, queremos una curva que en cada pedazo sea una curva de Bézier y que en los puntos
de encuentro con las otras curvas, este sea suave.
Splines son las curvas de Bézier por pedazos. Estamos interesados en dar el mínimo número de puntos de
control que generarán a toda la curva, es decir, nos interesa encontrar una base que genere al espacio de los
Splines, elegida la base, a los Splines se les llama B-Splines.
6. B-Splines
Una base para los Splines:
N ip (u) 
ui  p1  u
u  ui
N ip 1 (u) 
N ip11 (u)
ui  p  ui
ui  p 1  ui 1
N i0 (u)  1 si ui  u  ui 1 y 0 en cualquier otro caso
Por lo tanto, dados n+1 puntos de control b0 , b1 ,...,bn , el B-spline de grado n definido por estos puntos y
En donde
subintervalos está dado como sigue:
n
C (u )   N ip (u )bi
i 0
Los B-Splines son curvas polinomiales por pedazos, flexibles y con propiedades muy interesantes, una de las
más importantes es que se tiene control local de la forma de la curva, es decir, si cambiamos uno de los puntos
de control, solamente una parte de la curva cambiará.
7. Un par de ejemplos a continuación:
7.1 En mi curso de cálculo, el problema que tenían que resolver mis alumnos, era, yo les daba un foco (el
mismo a cada equipo) y ellos tenían que usar cálculo para calcular su volumen, el que aproximara mejor este
valor, obtenía la máxima calificación y así se iba calificando. Pero cómo comparar sus resultados si este no es
un problema en donde podamos ver la solución al final del libro, además la solución depende del foco. Por lo
que hice un perfil del foco usando splines, y después calcular su volumen.
El problema es, dados los siguientes datos:
(0,0.63),(0.55,0.68),(1.05,0.82),(1.53,1.08),(2.1,1.36),(2.54,1.42), (2.92,1.34),(3.3,1.14),(3.7,0.8)
Encontrar una función que sea suave y que pase por todos los puntos, la solución que damos a continuación
es, se construye un polinomio cúbico en cada segmento de tal manera que en cada pedazo, las curvas se unan
de manera suave, es decir, construimos un spline cúbico:
7.2 En el siguiente ejemplo, se muestra el diseño de la letra e, usando primero muchos puntos de control y en
el segundo, se utiliza el número óptimo para diseñar la letra, se utilizan splines cúbicos en el diseño. Se
observa que el diseño usando el número óptimo de puntos se superior al que usa muchos. Por lo que la
elección de una base para los splines cúbicos es importante.
Este dibujo fue tomado de la siguiente página. http://inicia.es/de/jmas/fontcreation1.html
En las siguientes ligas se pueden encontrar unos applets interesantes de curvas de Bézier:


http://www.math.ucla.edu/~baker/java/hoefer/Bezier.htm
http://www.cse.unsw.edu.au/~lambert/splines/Bezier.html
BIBLIOGRAFÍA


Farin Gerald, “Curves and Surfaces for CAGD. A Practical Guide”. Academic Press, Inc. 3a. ed. 1993
Alfeld P., Schumaker L., Sirvent M., “On Dimension and Existence of Local Bases for Multivariate
Spline Spaces”, Journal of Approximation Theory, vol. 70, No. 2, Agosto 1992.
Descargar