C omputo y Simulaci on del Cabello Humano

44
omputo y Simulaci´on del Cabello Humano Roger Steven Ram´ ırez Espejo, ´ Alvaro Jos´ e Vera Soto 22 de julio de 2010

Transcript of C omputo y Simulaci on del Cabello Humano

Page 1: C omputo y Simulaci on del Cabello Humano

Computo y Simulacion del Cabello Humano

Roger Steven Ramırez Espejo, Alvaro Jose Vera Soto

22 de julio de 2010

Page 2: C omputo y Simulaci on del Cabello Humano

2

Page 3: C omputo y Simulaci on del Cabello Humano

Indice general

1. Resumen 51.1. Objetivo General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.2. Objetivos especıficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.3. Flujo del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.3.1. Documentacion, planteamiento y solucion matematica del problema . . . . . . . . 61.3.2. Implementacion y desarrollo del programa . . . . . . . . . . . . . . . . . . . . . . . 71.3.3. Redaccion del documento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.3.4. Revision, pruebas y correcciones finales . . . . . . . . . . . . . . . . . . . . . . . . 7

2. Preliminares 92.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.2. Campos vectoriales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.3. Propiedades y mediciones en curvas parametricas . . . . . . . . . . . . . . . . . . . . . . . 11

2.3.1. Velocidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.3.2. Curvatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.3.3. Torsion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.3.4. Formulas de Frenet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.4. Campos de sistemas de referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.5. Mecanica Lagrangiana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.5.1. Modelos fısicos vs modelos cinematicos . . . . . . . . . . . . . . . . . . . . . . . . . 142.5.2. Coordenadas generalizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.5.3. Funcionales de Energıa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.5.4. Ecuaciones de Euler-Lagrange y el principio de mınima accion . . . . . . . . . . . 16

3. Modelo de simulacion de cabello en tiempo real 173.1. Algoritmo para sumulacion de pelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.2. Barras de Kirchhoff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.2.1. Curvas parametricas extendidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.2.2. Marcos de referencia usuales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.2.3. Relaciones entre los marcos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.2.4. Propiedades fısicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.2.5. Energıa elastica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.3. Discretizacion del modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.3.1. Caracterısticas del pelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.3.2. Representacion discreta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.3.3. Energıa elastica discreta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.4. Actualizacion del marco material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.4.1. Torsion optimizada del Cabello . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.5. Simulacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.5.1. Ecuaciones de movimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3

Page 4: C omputo y Simulaci on del Cabello Humano

4 INDICE GENERAL

3.5.2. Fuerzas elasticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.6. Lımites y colisiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.6.1. Tipos de restricciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.6.2. Ejecucion de las restricciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4. Simulador de cabello 334.1. Herramientas utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.1.1. Java y Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.2. La arquitectura de la aplicacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

4.2.1. Clase tesis simulacion de pelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344.2.2. Clase nDVector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.2.3. Clase Curva Parametrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.2.4. Clase Curva parametrica diferencial . . . . . . . . . . . . . . . . . . . . . . . . . . 38

5. Resultados y Conclusiones 415.1. Problemas y exitos a la hora de implementar la solucion . . . . . . . . . . . . . . . . . . . 415.2. Lo que no se alcanzo hacer y propuestas para el futuro . . . . . . . . . . . . . . . . . . . . 41

Page 5: C omputo y Simulaci on del Cabello Humano

Capıtulo 1

Resumen

En la actualidad, la computacion grafica ocupa un papel preponderante en las ciencias de la com-putacion. A saber, pelıculas animadas, juegos de video y efectos artificiales son parte del vocabulariocomun para alguien que trabaja en cine, television o entretenimiento en el siglo XXI. ¿Pero como selogra todo esto? Las matematicas y la gran velocidad combinada con una inmensa capacidad de computoque poseen los computadores actuales, han combinado esfuerzos para encontrar soluciones que permitenvirtualizar el comportamiento natural que vemos hoy en dıa, en cualquier parte.

En el transcurso de este documento se describen caracterısticas de las estructuras delgadas y flexibles,como lo es el cabello del ser humano, los que en su estructura original fueron caraterizadas por una con-figuracion curva sin ningun tipo de deformacion. El modelamiento de estas superficies tres dimensionalescon las que nos encontramos a diario, correspondıan anteriormente a modelos bastante complejos queeran difıciles de entender y simular. Por otro lado el proyecto aunque no es sencillo, logra dar forma ymostrar de una manarera mas clara y concisa dicho modelo que comprende la geometrıa convencional yel calculo de variables e integrales, simplemente usando lo ya conocido en el ambito de la Ingenierıa, deesta forma rapidamente se obtendra un simulador del cabello humano, siendo este capaz de mostrar elmovimiento causado por diversos entes externos (viento , un simple toque, etc).

Por otra parte, la combinacion de tecnologıas existentes como Java1, Processing2, son utilizadaspara realizar la correspondiente implementacion del simulador. Usando el core de java y la facilidad deimplementar metodos especiales que posee processing ayudan a generar la ejecucion de la virtualizacioncorrespondiente al problema planteado.

Durante cuatro capıtulos se recorre y explica detalladamente el problema y la solucion que plantea lasimulacion mediante una computadora, de las membranas flexibles del cabello humano. En el capıtulo Ise hace una recopilacion de conceptos necesarios que son aplicados para solucionar el problema planteado;entre ellos tendremos la fısica de las barras propuesta por Kirchhof, energıas elasticas, marco paralelo detransporte de Bishop, modelos discretizables y sus respectivas ecuaciones para la implementacion exitosadel problema planteado. El capıtulo II presenta toda la teorıa matematica sobre la generacion de el cabel-lo humano basado en ecuaciones representadas en derivadas, integrales y ecuaciones relacionadas con elalgebra. El capıtulo III presenta la arquitectura especial del simulador que abarca los dos capıtulos ante-riores y realiza la implementacion de los metodos anteriores. Los resultados y las conclusiones obtenidasse presentan en el capıtulo IV que tomara los resultados obtenidos con la respectiva implementacion delprograma.

1Lenguaje de programacion orientado a objetos desarrollado por la empresa Sun Microsystems a principios de los anos90, usa una sintaxis similar a los lenguajes de programacion C y C++, con la caracterıstica que elimina herramientas debajo nivel que suelen conducir a errores en apuntadores a posiciones de memoria.

2Lenguaje y entorno de programacion de codigo abierto basado en java, sirve para produccion de proyectos de multimediay diseno digital.

5

Page 6: C omputo y Simulaci on del Cabello Humano

6 CAPITULO 1. RESUMEN

Figura 1.1: Etapas de ejecucion del proyecto

1.1. Objetivo General

Implementar algoritmos para la simulacion de cabello humano bajo el esquema de programacionorientada a objetos.

1.2. Objetivos especıficos

Utilizar geometrıa diferencial para modelar un cabello como barra de Kirchhoff.

Incluir fuerzas externas para simular la fısica del movimiento de cabello siguiendo el modelo deTerzopoulos.

Implementar el modelo de Kmoch para la dinamica de cabelleras humanas.

Producir una librerıa de simulacion de cabello humano utilizando Processing y Java.

1.3. Flujo del proyecto

El proyecto fue divido en 4 etapas secuenciales cada una imediatamente dependiente de la anterior(ver figura 1.1 )

1.3.1. Documentacion, planteamiento y solucion matematica del problema

En esta etapa se comprende el modelo matematico que definen las soluciones al sistema, es decir atraves del calculo variacional se daran las respuestas al problema planteado. Esta misma es muy impor-tante porque a traves del modelo matematico se dara solucion al proyecto.

Page 7: C omputo y Simulaci on del Cabello Humano

1.3. FLUJO DEL PROYECTO 7

1.3.2. Implementacion y desarrollo del programa

Un buen diseno define una buena aplicacion, por esta razon en esta etapa se realizara un analisis delas soluciones y se definira un esquema (realizado a traves de diagramas UML) que dara un oriente claroa la implementacion computacional del aplicativo.

Adicionalmente, se tomara el modelo anteriormente desarrollado para crear una correcta estructura fun-cional del programa.

1.3.3. Redaccion del documento

Tomando como base esencial el modelo matematico propuesto ademas del desarrollo funcional delprograma se pretende realizar la correspondiente etapa de documentacion y formalizacion de los teore-mas resueltos y demostrados en las etapas anteriores.

Ademas se dara un relato completo del desarrollo del proyecto, ası como, experiencias vividas, pendientesy una seccion de apendices que mostraran extras interesantes relacionados con el proyecto.

1.3.4. Revision, pruebas y correcciones finales

Lo ideal de esta etapa es la de realizar profundas revisiones del proyecto para refinar y pulir detallesque no se han tenido en cuenta anteriormente para que de esta manera se establezca un buen estandarde presentacion del proyecto.

Page 8: C omputo y Simulaci on del Cabello Humano

8 CAPITULO 1. RESUMEN

Page 9: C omputo y Simulaci on del Cabello Humano

Capıtulo 2

Preliminares

A lo largo de este capıtulo se estableceran todos los conceptos basicos que se necesitan conocer y usarpara plantear la solucion al problema de simular y/o virtualizar el computo del cabello humano que sonel objetivo comun del proyecto.

2.1. Introduccion

Los metodos que formulan y representan formas instantaneas de los objetos son el centro del mode-lamiento por computacion grafica. Estos metodos han sido particularmente utiles, para modelar objetosrıgidos los cuales su superfices no cambian durante el tiempo[18]. Este proyecto desarrolla un enfoque almodelamiento el cual incorpora dinamicas de los materiales delgados y flexibles que estan sujetos a cam-bios permanentes, dentro de modelos geometricos los cuales han sido usados tradicionalmente. Modelosbasados en teorıas de elasticidad, torsion y agentes externos son convenientes para representar la forma ymovimiento del cabello humano cuando este sufre algun tipo de deformacion respecto a su estado original.

La animacion realista y presentacion del cabello es parte crucial en la virtualizacion del ser humano.En investigaciones realizadas anteriormente se determino que la simulacion de barras elasticas, intro-ducen una mejora tecnica que utiliza propiedades especıficas de cada unos de los filamentos del pelohumano mejorando ası su rendimiento y simulacion[13]. Aunque se tiene en cuenta todo esto , no es deltodo facil la representacion del cabello humano de manera computable, pues la simulacion de este se vesujeta a multiples agentes como lo son, la torsion, el patron crecimiento del cabello, teniendo en cuentaque este puede ser un crecimiento uniforme o como lo es en la mayorıa de los casos de crecimiento nouniforme; adicionalmente a esto interactua tambien la gran cantidad de cabello que puede tener unapersonas estimandose esta sobre los 100.000 cabellos invividuales[4] en donde en cada fibra de cabellointeractuan todo tipo de simulaciones fısicas.Por otra parte, estucturas delgadas y rıgidas (ej., unas delos dedos, botellas de vidrio), son objetos que son naturalmente curvos y no requieren de un gran estu-dio, ya que estos no sufren ningun tipo de deformacion y/o adaptacion a un entorno determinado; masaun pensando en deformaciones plasticas (ej., sombreros, latas, cajas de carton, chasis de automoviles,botellas de detergentes), son membranas delgadas que no pueden ser modeladas usando formulacionescomo las utilizadas en el modelamiento y computo del cabello humano.

Actualmente se tienen, o mejor, se trabajan dos categorıas generales para la representacion del cabello;la primera consiste en trabajar hebra por hebra de cabello independiente como un todo logrando deesta manera expresarla como una cadena de hebras rıgidas, la segunda forma es de volumen y esta esrepresentada y simulada utilizando implementaciones de mecanica continua sobre partıculas suavizadas.

Fundamental en el estudio de la simulcion de pelo es la teorıa de barras de Kirchoff[25, 4]. Estos modelosse basan en la construccion de operaciones sobre curvas parametricas tanto vectoriales como escalares.

9

Page 10: C omputo y Simulaci on del Cabello Humano

10 CAPITULO 2. PRELIMINARES

En el enfoque de este documento una curva parametrica es una inyeccion de un intervalo cerrado de Ren un espacio euclideo Rn[23]. A saber,

Definicion 2.1.1 (CurvaParametrica) Sea [a, b] ⊂ R un intervalo cerrado. Una curva parametricacon dominio [a, b] es una funcion vectorial c : [a, b]→ Rn de la forma:

c(t) =

x1(t)x2(t)

...xn(t)

(2.1)

para t ∈ [a, b]. Las funciones xi : [a, b]→ R se conocen como las componentes de c.

Las curvas parametricas constituyen el objeto geometrico mas simple despues del punto. Dado que unacurva parametrica es una funcion, su diferenciabilidad y continuidad dependen de sus funciones compo-nente.

Teorema 2.1.2 Una curva parametrica c dada en la forma 2.1 se dice continua si cada componente xi

es continua.

Teorema 2.1.3 Una curva parametrica c dada en la forma 2.1 se dice diferenciable n-veces si cada unade sus componentes es al menos n-veces diferenciable.

2.2. Campos vectoriales

Los campos vectoriales son vistos desde la perspectiva de la fısica como una ayuda para el mode-lamiento de la velocidad, las direcciones que toman los lıquidos atraves del espacio, o la intensidad ydireccion de algun tipo de fuerza; en nuestro caso se ve reflejada en el moviemeinto del cabello humanoy todas las fuerzas que actuan sobre este, como lo son las velocidades en la direccion en que este se estamoviendo, la gravedad que se ejerce sobre cada hebra de cabello, entre otras.

Es importante que se entienda con claridad que es un campo vectorial, antes de adentrarnos en las nocionesde rapidez, torsion y curvatura, ya que esta nos da las bases para poder lograr entender matematica-mente y fısicamnente, el comportamiento que toma el cabello humano obedeciendo a actuadores externosy ası poder comprender como funciona y por que se dan cambios repentinos en su comportamiento.

Definicion 2.2.1 (Campo vectorial en Rn) Un campo vectorial es una funcion F : Rn → Rn que acada punto x ∈ Rn le asigna un vector F(x). A saber un campo vectorial esta descrito por una funcionde la forma:

F(x) =

F1(x)...

Fn(x)

(2.2)

donde las funciones Fi son escalares y se conocen como las componentes del campo F.

Si bien, entre la definicion de un campo vectorial y una curva parametrica se habla de componentes, unacurva parametrica asigna a una posicion en el espacio un vector que indica direccionalidad. Los camposvectoriales son utiles en fısica y matematicas para describir fuerzas, tensiones y son de utilidad en ladescripcion del trabajo y la energıa.

La nocion de campo vectorial se puede restringir a una curva. A saber, si un campo vectorial asignavectores de direccion a cada punto del plano, se puede hablar de la restriccion de estos a una curvaparametrica o bien de un campo vectorial sobre una curva parametrica.

Page 11: C omputo y Simulaci on del Cabello Humano

2.3. PROPIEDADES Y MEDICIONES EN CURVAS PARAMETRICAS 11

Definicion 2.2.2 (Campo vectorial sobre una curva parametrica) Sea c : [a, b] → Rn una curvaparametrica continua y sea F : Rn → Rn. La restriccion de F, Fc a la curva c constitye un campovectorial sobre la curva c. A saber:

Fc(t) = F c(t) (2.3)

2.3. Propiedades y mediciones en curvas parametricas

Con las propiedade s y mediciones de la curva parametrica estamos introduciendonos mas a fondoen el tema que nos atane respecto a la virtualizacion del cabello humano, ya que logramos identificarcomponentes importantes que se estudiaran mas adelante y con mas profundidad como lo son las medidasvectoriales que seran utilizadas en el siguiente capıtulo, para la implementacion y utilizacion de Torsiony Flexion y las medidas escalares, representadas por vectores, dandonos la informacion necesaria sobrelas fuerzas y el direccionamiento que actuan sobre el objeto que estamos trabajando.

2.3.1. Velocidad

Una curva parametrica se utiliza para representar la trayectoria de una partıcula bajo fuerzas o causasvariadas. Dentro de este enfoque, la velocidad de una partıcula se puede cuantificar a partir de lasderivadas de la curva parametrica describiendo su trayectoria o bien a partir de su vector tangente.

Definicion 2.3.1 (Vector tangente a una curva) Sea c : [a, b]→ R una curva parametrica con com-ponentes al menos una vez diferenciables. El vector tangente a c, c′ es la funcion definida por:

c′(t) =

x′1(t)x′2(t)

...x′n(t)

(2.4)

el vector tangente a la curva c se conoce tambien como el vector de velocidad de la curva.

Si bien una curva parametrica sirve en un contexto fısico para describir el movimiento de una partıculaen el espacio o en el tiempo, una curva parametrica es en sı misma un objeto geometrico, susceptible deanalisis mediante metodos de calculo[23]. En particular, la longitud de una curva parametrica se puedeestimar mediante la longitud de su vector tangente, por medio de la siguiente definicion:

Definicion 2.3.2 (Longitud de Arco) Sea c : [a, b]→ Rn una curva parametrica continua y al menosuna vez diferenciable. La longitud o longitud de arco de la curva c, L(c) esta dada por:

L(c) =∫ b

a

||c′(t)||dt (2.5)

Notese que la longitud de arco de una curva depende intrınsecamente del dominio de la curva. De estemodo, una curva con dominio [a, b] o con dominio [c, d] pueden tener longitudes distintas a pesar de quetengan la misma grafica en el plano. Con objeto de superar esta dualidadd, se propone la parametrizacionpor longitud de arco de una curva. A saber, si la longitud de una curva c con dominio [a, b] esta dada porL = L(c), se puede construir una reparametrizacion de c de modo tal que c tiene la misma grafica que cpero el dominio de c es el intervalo [0, L][17].

Definicion 2.3.3 (Curva parametrizada por longitud de arco) Si c : [a, b] → Rn es una curvaparametrica continua y al menos una vez diferenciable, con longitud L = L(c), existe una funcion D :[0, L]→ [a, b] y una curva parametrica c tal que

c = c D (2.6)

a la funcion c se conoce como la parametrizacion de c por longitud de arco.

Page 12: C omputo y Simulaci on del Cabello Humano

12 CAPITULO 2. PRELIMINARES

En el sentido geometrico de las curvas parametricas, la reparametrizacion por longitud de arco en unacurva permite imaginarse a la curva como si fuera una lınea recta que es deformada en el espacio paraocupar una forma especıfica: la grafica de la curva[17].

2.3.2. Curvatura

Teniendo en cuenta que el concepto de curvatura en una superficie es la que mide la velocidad en laque la curva abandona el plano tangente a esta, en un d eterminado punto es importante mencionar que:

Definicion 2.3.4 (Vector de Curvatura) Sea c : [a, b]→ Rn una curva parametrica con componentesal menos dos veces diferenciable . El vector de curvatura de la curva c es el vector c′′ definido por:

c′′(t) =

x′′1(t)...

x′′n(t)

(2.7)

La curvatura de una curva parametrica es una generalizacion del concepto de concavidad para funcionesde una variable. En general, la direccion del vector de curvatura define un cırculo conocido como el cırculoosculante[17]; localmente, la curva se puede ver como una seccion o trozo del cırculo osculante, pues elvector de curvatura apunta siempre hacia el centro de este.

Al mismo tiempo, se puede definir la curvatura κ(t) de una curva parametrica por medio de la sigu-iente definicion:

Definicion 2.3.5 (Curvatura de una curva parametrica) Si c : [a, b] → Rn la curvatura de unacurva parametrica esta definida por la funcion κ(t) dada por:

κ(t) = ||c′′(t)|| (2.8)

El radio de curvatura de una curva parametrica esta definido como el recıproco de la funcion κ y corre-sponde con el radio R del cırculo osculante:

R =1κ

(2.9)

como corolario a estas definiciones es importante decir que una curva que es plana (recta) tiene curvaturacero y un radio de curvatura infinito.

2.3.3. Torsion

Una curva parametrica describe el movimiento de una partıcula en el espacio y constituye un objetogeometrico de dimension 1 en el sentido de la geometrıa diferencial[17]. Si el vector de velocidad de lacurva describe la rapidez de una partıcula siguiendo la trayectoria de esta y el vector de curvatura describeque tanto difiere esta de un plano, la torsion describe la manera como una partıcula rotarıa, de seguir latrayectoria de la curva.

Definicion 2.3.6 (Vector de Torsion) Sea c : [a, b] → Rn una curva parametrica al menos dos vecesdiferenciable. Si c′(t) y c′′(t) identifican los vectores de velocidad y curvatura, se define la torsion B comoel vector

B(t) = c′(t)× c′′(t) (2.10)

Es importante notar que existe una relacion geometrica entre los vectores de velocidad, curvatura ytorsion. Del mismo modo que la primera y segunda derivadas de una funcion identifican su velocidadde cambio y su concavidad, la velocidad y la curvatura miden el cambio en el espacio de la curva comoobjeto geometrico. De la misma manera que a partir del vector de curvatura se define la curvatura deuna curva, la torsion de una curva esta definida como la norma de su vector de torsion:

Page 13: C omputo y Simulaci on del Cabello Humano

2.4. CAMPOS DE SISTEMAS DE REFERENCIAS 13

Definicion 2.3.7 (Torsion de una curva parametrica) Si c : [a, b] → Rn es una curva parametricacontinua, al menos dos veces diferenciable, su torsion esta definida por la funcion τ(t) dada por:

τ(t) = ||B(t)|| (2.11)

Existen relaciones fuertes entre la velocidad, la curvatura y la torsion de una curva parametrica. Estasrelaciones se condensan en las conocidas ecuaciones de Frenet-Serret que relacionan las tasas de cambioespaciales de los vectores de velocidad, curvatura y torsion y permiten el estudio y clasificacion de lascurvas parametricas.

2.3.4. Formulas de Frenet

Uno de los puntos claves dentro de la virtualizacion y renderizacion del cabello humano tiene quever con la torsion que este sufre por diversos entes externos; en esta seccion entraremos a analizar sucomportamiento y las medidas matematicas que tiene este en una curva Rn; es de tener en cuenta quesolo trataremos curvas de rapidez unitaria.

Teorema 2.3.8 (Formulas de Frenet) Si c : [a, b]→ Rn es una curva parametrica continua al menostres veces diferenciable, denotese por T al vector de velocidad de la curva normalizado, N al vector decurvatura normalizado y B al vector de torsion normalizado. Las derivadas de T,N y B satisfacen lassiguientes relaciones:

T′ = κc′

N′ = −κc+ τc′′

B′ = τc′

(2.12)

Cabe anotar que estas relaciones sin independientes de la parametrizacion o reparametrizacion de la curvay constituyen un invariante para estas[17].

2.4. Campos de sistemas de referencias

Si bien un campo vectorial es una funcion que a cada punto del plano le asigna una direccion demovimiento (un vector), las componentes de un campo vectorial dependen del sistema de referencia deRn utilizado: la direccion de este depende de la escogencia de un sistema.

Definicion 2.4.1 (Sistema de referencia en Rn) Una coleccion β = v1, . . . ,vn ⊂ Rn se dice unsistema de referencia en Rn si satisface las siguientes dos condiciones:

La coleccion es ortonormal: ||vi|| = 1 para i = 1, . . . , n y vi · vj = δij.1

Todo punto en Rn se puede escribir como una combinacion lineal de los vectores en β.

Si bien en algebra lineal, los sistemas de referencia o bases permiten escribir vectores en Rn de maneraresumida, no hay razon para pensar que la base de vectores este siempre definida desde un punto fijo-generalmente el origen-. En efecto, la traslacion de los vectores desde el origen hasta un punto arbitrariox ∈ Rn no cambia la geometrıa del espacio sino simplemente la manera como se describen los puntos eneste como coordenadas. A saber, para punto x ∈ Rn se puede definir un sistema de referencia desde elcual describir vectores, por medio del movimiento rıgido.

Definicion 2.4.2 (Movimiento rıgido) Si x ∈ Rn es un vector, dado y ∈ Rn, el vector Tx(y) definidopor:

Tx(y) = x + y (2.13)

se denomina el movimiento rıgido de y hacia la posicion x.1δij se conoce como el delta de Kronecker : δij = 1 si i = j o cero de lo contrario

Page 14: C omputo y Simulaci on del Cabello Humano

14 CAPITULO 2. PRELIMINARES

En particular, un sistema de referencia se puede trasladar rıgidamente a una posicion arbitraria x delespacio. Todo vector en Rn se puede escribir en este nuevo sistema de referencia trasladado aprovechandolas operaciones de vectores. Dado que una curva parametrica define una trayectoria en el espacio, un sis-tema de referencias puede se trasladado de manera rıgida a traves del recorrido de la curva, constituyendolo que se conoce como un sistema de referencia movil

Definicion 2.4.3 (Traslacion de un sistema de referencia por una curva) Sea c : [a, b] → Rn

una curva parametrica continua y sea β = v1, . . . ,vn un sistema de referencia en Rn. Un sistemade referencia trasladado sobre la curva c, βc(t) es un sistema de referencia de Rn que sigue la trayectoriade la curva. A saber,

βc =Tc(t)(v1), . . . , Tc(t)(vn)

(2.14)

Un sistema de referencia movil sobre una curva puede estar determinado por la curva y no solamentepor la traslacion rıgida de un sistema arbitrario. De esta manera, podemos generalizar la nocion de unsistema de referencia movil por medio de la siguiente definicion:

Definicion 2.4.4 (Sistema de Referencia movil) Sea c : [a, b]→ Rn una curva parametrica contin-ua. Un sistema de referencia movil a un curva es una aplicacion F que a cada punto sobre la curva, leasigna un sistema de referencia:

F(t) = v1(t), . . . ,vn(t) (2.15)

Como consecuencia de esto, los campos vectoriales se pueden escribir como combinaciones lineales devectores en un sistema de referencia movil sobre una curva[17]. En particular, los vectores de velocidad,curvatura y torsion constituyen un ejemplo de un sistema de referencia movil sobre curvas parametricas.

2.5. Mecanica Lagrangiana

La mecanica lagrangiana es una reformulacion de la mecanica clasica que combina la conservaciondel momento con la conservacion de la energıa para tratar problemas de fısica de una manera novedosa.En esta, la trayectoria que un sistema de partıculas sigue esta intrınsecamente relacionada con principioscomo la conservacion de la energıa y el principio de mınima accion[1].

En la mecanica lagrangiana se procede primero a cuantificar la energıa del sistema a partir de su posicionespacial, su velocidad y aceleracion en lo que se conocen como coordenadas generalizadas. Desde aquı,es posible definir un sistema de ecuaciones diferenciales, que al resolverse encuentran la configuraciondel sistema que minimiza el gasto de energıa y predicen el movimiento de este[1]. Estas ecuaciones sonconocidas como las ecuaciones de Euler-Lagrange.

2.5.1. Modelos fısicos vs modelos cinematicos

La mayorıa de los metodos tradicionales de modelamiento grafico mediante una computadora soncinematicos[23]. En un modelo cinematico, se modela la interaccion de las partıculas de manera causal: elmovimiento es ocasionado por fuerzas externas o internas a estas y ocasionan movimiento[24, 6]. Al con-trario, un modelo fısico integra las fuerzas tanto internas como externas a un sistema y permite predecirsu comportamiento tanto desde los estımulos que ocasionan el movimiento, como desde los principios quesubyacen a este.

Al mismo tiempo, el tratamiento analıtico mas simple de un problema fısico particular se encuentraa veces dentro de lo puramente cinematico (o newtoniano) a veces se encuentra dentro de lo lagrangiano.En particular, los problemas fısicos donde se involucra elasticidad, deformacion o ruptura son intratablesdesde una postura newtoniana, mientras que la notacion, ecuaciones y soluciones se pueden estudiar desdeuna perspectiva lagrangiana de modo natural[24].

Page 15: C omputo y Simulaci on del Cabello Humano

2.5. MECANICA LAGRANGIANA 15

2.5.2. Coordenadas generalizadas

Considerese un sistema de n partıculas moviendose en Rn de acuerdo con fuerzas y estımulos varios.Una descripcion newtoniana de este presupone la utilizacion de cuando menos n funciones vectoriales

x1(t),x2(t), . . . ,xn(t) (2.16)

En una postura lagrangiana del mismo sistema, la configuracion total del sistema depende de las posicionesindividuales de cada partıcula en este: a partir de las componentes de las funciones xi. En particular,estas funciones dependen entre otras de una seleccion de una base de Rn de modo tal que si la base delespacio cambia o si el sistema de referencia en el cual estan inscritas estas funciones cambia, el problemadebe replantearse totalmente.

Si se considera mas bien que la posicion de cada partıcula depende de un numero de parametross1, s2, . . . , sp podrıa generalizarse estas funciones xi, de modo tal que el estado o configuracion del sistemacompleto dependa de una coleccion de funciones

qi(s1, s2, . . . , sp; t) (2.17)

de modo tal que la configuracion del sistema depende de los parameros s1, . . . , sp, independiemente delespacio en el que las partıculas se encuentren. Estos parametros se conocen como los grados de libertaddel sistema. La construccion de cada funcion qi depende de la naturaleza del problema y de la dinamicade este.

Las leyes basicas de la fısica como la ley de la inercia, la conservacion de masa y energıa se puedenescribir mediante las derivadas de estas funciones q, de modo tal que se puede aplicar calculo variacionala los modelos lagrangianos, resultando en las ecuaciones de Euler-Lagrange.

2.5.3. Funcionales de Energıa

Dado un sistema de partıculas q1,q2, . . . ,qn con k-grados de libertad s1, s2, . . . , sk se puede cuantificarla energıa en una posicion arbitraria del sistema mediante la velocidad y posicion del sistema de modogeneralizado. Por ejemplo, la ecuacion para calcular la energıa cinetica de una partıcula:

K =12m||x||2 (2.18)

En terminos lagrangianos:

K =12m||q||2 (2.19)

Ası bien, en un sistema de n-partıculas se puede construir una funcion

F (s1, s2, . . . , sk,q1, . . . ,qn, q1, . . . , qn) (2.20)

esa funcion cuantifica la energıa del sistema en una configuracion particular de este. A saber, entrega laenergıa instantanea[1]. De este modo, para la energıa total E(q1,q2, . . . ,qn) del sistema en todas susconfiguraciones posibles se tiene en virtud de

E(q1,q2, . . . ,qn) =∫ ∫ ∫

. . .

∫F (s1, s2, . . . , sk,q1, . . . ,qn, q1, . . . , qn)ds0ds1 . . . dsk (2.21)

Esta integral debe ser tomada sobre un dominio para los grados de libertad acorde con el sistema es-tudiado. Por ejemplo, en el caso de las curvas parametricas, su energıa interna se debe a factores comola curvatura y la flexion. En este sentido, si c : [a, b] → Rn es una curva parametrica, su energıa E(c)esta dada por:

E(c) =∫ b

a

α||c′(t)||+ β||c′′(t)||2dt (2.22)

Page 16: C omputo y Simulaci on del Cabello Humano

16 CAPITULO 2. PRELIMINARES

Esta nocion es aprovechada en modelos de curvas flexibles y elasticas satisfaciendo propiedades especialesy es explorada por una variedad de autores: Terzopoulos et al.[4],Baraff et al.[25] y Hadap[20] entre otros.

Notese que la funcion E de energıa toma una funcion (la configuracion del sistema) y la transformaen un numero (su energıa), a saber, una funcion de funciones o un funcional.

2.5.4. Ecuaciones de Euler-Lagrange y el principio de mınima accion

Dentro del planteamiento Lagrangiano de la fısica, a cada sistema fısico se le asigna un funcionalde energıa. Los sistemas tienden a minimizar su energıa y adoptan una configuracion que hace esto.Matematicamente hablando, en la mecanica lagrangiana todos los sistemas adoptan configuraciones queson mınimos de su funcional de energıa, de manera que para predecir un sistema es necesario minimizarel funcional E.

Este proceso es analogo a la conocida tecnica de calculo para hallar puntos crıticos de funciones de fun-ciones univariadas: derivar, igualar a cero y despejar. En el caso particular de los sistemas Lagrangianos,el derivar el funcional de energıa del sistema resulta en un sistema de ecuaciones diferenciales conocidascomo las ecuaciones de Euler-Lagrange que el sistema debe satisfacer en un optimo de la energıa. De estemodo, solucionando estas ecuaciones se obtiene la configuracion mas optima del sistema[24].

Si un sistema de n partıculas posee un funcional de energıa de la forma

E(q1,q2, . . . ,qn) =∫ ∫ ∫

. . .

∫F (s1, s2, . . . , sk,q1, . . . ,qn, q1, . . . , qn)ds0ds1 . . . dsk (2.23)

Sus ecuaciones de Euler-Lagrange en cuya solucion esta el optimo de la energıa se encuentran mediantela solucion de las ecuaciones diferenciales determinadas por

d

dt

(∂F

∂qi

)− ∂F

∂qi= 0 (2.24)

Estas ecuaciones son deducidas a partir del calculo de la primera variacion del funcional de energıa: unasuerte de primera derivada de este[24].

Page 17: C omputo y Simulaci on del Cabello Humano

Capıtulo 3

Modelo de simulacion de cabello entiempo real

En este capıtulo se mostrara un modelo dinamico de animacion de cabello disenado para usar enambientes virtuales que se ejecutan en tiempo real. Con base en recientes investigaciones y resultadosde la simulacion de barras elasticas, se introdce una tecnica la cual utiliza propiedades especıficas delos filamentos de cabello para lograr una simulacion estable y de gran rendimiento. Las animacionesrealistas y la renderizacion del cabello son parte crucial para modelar humanos virtuales [18]. Sin en elcomportamiento natural del cabello, el realismo de las escenas presentadas no serıa el indicado ni el maspreciso, la cabeza de los humanos es un punto trascendental para los observadores [18]. Desafortunada-mente, la animacion del cabello no es una tarea facil, debido a que esta forma geometrica exhibe muchascaracterısticas fısicas especıficas que se deben tener en cuenta a la hora de simular. Los cabellos tienenun caracter natural anisotropico 1; Practicamente el cabello no se puede ni estirar ni romper. Al mismotiempo este se dobla y se tuerce facilmente, pero vuelve a su estado original cuando la tension externaes removida, adicionalmente la longitud de un cabello en orden de magnitudes es mucho mas grandeque su diametro. Estas propiedades, combinadas con el hecho que una persona comun posee alrededor de100.000 cabellos hacen que la precision y la velocidad de la simulacion sea una tarea bastante compleja [13].

El modelo que presenta Kmoch et al. [13] se concentra en la animacion del cabello en escenarios entiempo real, abandonando el realismo estricto al cambio de velocidad [3], pero manteniendo plausibili-dad y una base fısica. Para lograr este efecto, con base en el modelo introducido en [18], originalmentedisenado para objetos grandes y flexibles como las cuerdas. Esto, combinado con un paso en el tiempo,permite el uso de un rapido esquema de integracion explıcito el cual es calculable en tiempo real.

Los metodos para simular el cabello generalmente se dividen en dos categorıas: basados en los cabel-los o basados en el volumen del mismo. la idea de representar el cabello cono un volumen fue introducidoen [16]. El cabello es tratado como un volumen del pelo en cuestion y simulado usando mecanica continuaimplementada en partıculas suaves. Las hebras individuales de cabello son modeladas como una cadenade nodos rıgidos, unidos mediante partıculas continuas.

Los metodos basados en el volumen abandonan la nocion de los cabellos individuales aun mas. En [14],el volumen es modelado como una malla con nodos acutando como partıculas simuladas. Las hebras sonunidas a la malla por resortes eslasticos. El enfoque mas radical fue adoptado en [21], donde el cabello essimulado como partıculas suavizadas conectadas por resortes, sin nociones de hebras de cabello donde laapariencia de este es obtenida usando texture splatting2.

1Cuando un cabello es de caracter anisotropico se dice que posee propiedades distintas a lo largo de su longitud, porejemplo, un cabello en su raız tiene mas resistencia a la flexion que en su punta

2texture splatting es denominado en computacion grafica al metodo de combinar varias texturas

17

Page 18: C omputo y Simulaci on del Cabello Humano

18 CAPITULO 3. MODELO DE SIMULACION DE CABELLO EN TIEMPO REAL

Los metodos volumetricos generalmente son mas rapidos, pero ellos tienden a producir deformacionesy no capturan la complejidad y comportamiento del cabello [21]. El enfoque es modelar el cabello ex-plıcitamente 3, ası como analizar los cabellos individualmente o como mechones, un enfoque para elmodelamiento de cabellos dinamicos son los sistemas de resortes (ver figura 3.1).

Las las barras de Kirchhoff han sido recientemente estudiadas en areas que no estan relacionadas con elcabello [3][10]. El metodo de[10] representa la torsion usando angulos, mientras que en [3], la rotacionescalar desde un marco de referencia es usada y la torsion. Para materiales de baja rigidez, estos metodosson utiles para lograr una buena simulacion.

Un modelo dinamico diferente es la teorıa de las barras elasticas de Kirchhoff 4 presentado por Kmochet al[13], al principio introducidas dentro de [2]. Una aplicacion de esta teorıa de simulacion de cabellofue presentada en [8], usando las ecuaciones de Kirchhoff discretizadas como super-helices, una estructurahelicoidal. Las helices como simulacion del cabello reducen considerablemente el numero de variables,pero resulta un sistema no lineal y muy costoso de computar. Ası mismo modelar las interacciones delcabello es un trabajo bastante complejo.

Diferentes modelos de cabellos son usados para computar el comportamiento complejo del cabello ası comola torsion[19] o efectos de productos de belleza[11]. El paradigma empleado es el de cadenas rıgidas[7][12][20].A lo largo de este capıtulo se expone el modelo de barras de Kirchhoff tal como se presenta en [13] uti-lizando los conceptos expuestos en el capıtulo 1 (Preliminares).

(a) (b)

Figura 3.1: Barras elasticas de Kirchoff utilizadas en la simulacion de cabello ondulado en estado natural.Parte (a) barras como se mostrarıan en la simulacion combinando hebras fısicas y hebras interpoladas,(b) barras fısicas en blanco, barras interpoladas en negro. Figura tomada del paper de Kmoch et al.[13]

3.1. Algoritmo para sumulacion de pelo

Segun el modelo planteado por Kmoch et al. [13] se realiza la simulacion y computo de las popiedadesde cada uno de los cabellos. A saber, el volumen entero del cabello es visto como una coleccion de hebrasindividuales, sujetas a una simulacion fısica. Ası bien, un gran numero de cabellos se simulan mediante

3Modelar el cabello explıcitamente se refiere al metodo de evaluar cada uno de los cabellos (o un conjunto pequeno deellos, como los mechones) y computar sus propiedades individualmente, es decir, durante la ejecucion no se infiere ningunprocedimiento.

4En la seccion 3.2 se tratara el tema con mayor profundidad

Page 19: C omputo y Simulaci on del Cabello Humano

3.2. BARRAS DE KIRCHHOFF 19

la interpolacion, de esta manera el estado de cada una de las hebras de cabello es interpolada desde laraız (ver figura 3.1(a)). Cabe citar que el modelo para optimizar el rendimiento y evitar el computo demuchas variables usa una teorıa de hebras fısicas y replicas; es decir, el modelo no computa todos loscabellos toma algunos y replica su estado en las hebras5 mas cercanas (es decir simular mechones de ca-bellos diminutos, ver figura 3.1(b) .Este mantiene el numero de de hebras simuladas a un nivel manejable,mientras que aun permite un comportamiento no uniforme en el volumen del cabello.

El modelo propuesto por Kmoch et al [13] se expone en el Algorıtmo 1. Notese la division de todaslas posibles fuentes de la ecuacion relacionadas con la rigidez que son calculadas en pasos de posterioresa los calculos de las restricciones.

Algoritmo 1. Esquema general simulador de cabello.

1. calcular valores iniciales2. while(simulacion corriendo)3. computar fuerzas4. integrar ecuaciones de movimiento5. detectar colisiones entre cabellos6. while(restricciones sobre las colisiones no estan resueltas)7. mejorar el paso de calculo de las restricciones8. 9. actualizar marco de Bishop10. computar torsion de la curva11.

El algoritmo presentado por Kmoch et al [13] basicamente se divide en 9 procedimientos. Primero secalcula el estado inicial de las curvas, entre ellos la posicion incial, su velocidad, su aceleracion, su marcode Bishop, su marco material, etc 6. Posteriormente se incializara la simulacion. Durante la simulacionse calcularan y actualizaran las fuerzas que intervienen en el sistema en ese instante del tiempo. Acontinuacion se integraran las ecuaciones de movimiento que describen el movimiento que tendra la curvaal aplicar las fuerzas calculadas en el paso anterior. Despues se realizara un proceso de iteracion el cualse encarga de definir y aplicar las restricciones necesarias y de calcular el efecto de las colisiones entre loscabellos. Por ultimo se realizara la correspondiente acutalizacion del marco de bishop de cada una de lascurvas ası como computa r la torsion existente en ellas.

3.2. Barras de Kirchhoff

En escencia una barra elastica de Kirchhoff es una forma geometrica que posee ciertas propiedadesfısicas que la hacen flexible e irrompible, por ejemplo una cuerda. Habiendo descrito el algoritmo de Kmochet al. se muestra en esta seccion una construccion de las barras de Kirchhoff basicas para el modelo desimulacion de cabello. Veremos los marcos de referencia presentes en las barras de Kirchhoff (Frenet7,Material y Bishop). Por ultimo y no menos importante hablaremos de la energıa elastica presente en lasbarras de Kirchhoff. En secciones posteriores realizaremos una discretizacion del modelo ası como unaampliacion matematica del modelo planteado por Kmoch [13] et al.

3.2.1. Curvas parametricas extendidas

Dentro del modelo de simulacion de cabello utilizado por Kmoch[18] y Baraff et al.[25], un cabello estratado como un cilındro deformando su eje central y sobre el cual se define un marco de referencia movil

5Entiendase por hebra a un cabello individual6Estos conceptos son vistos en profundidad en las secciones posteriores7Refierase al capıtulo anterior

Page 20: C omputo y Simulaci on del Cabello Humano

20 CAPITULO 3. MODELO DE SIMULACION DE CABELLO EN TIEMPO REAL

(revısese la definicion 3.2.1).Notese que una barra elastica de Kirchhoff se mueve tanto en el espacio comoen el tiempo. Consecuentemente defınase una curva parametrica movil :

Definicion 3.2.1 (Curva parametrica movil (extendida)) Una funcion x : [a, b]×R+ → R3 se diceque es una curva parametrica movil o extendida si para t > 0 la funcion

x(s, t) =

x1(s, t)...

xn(s, t)

(3.1)

es una curva parametrica en el sentido de la definicion 2.1.1.

Entiendase una curva parametrica extendida como una curva parametrica en la variable s que iden-tifica la posicion en el espacio de la curva, mientras que el parametro t denota el instante de tiempo enel que la curva esta.

Si se asume que las componentes de la curva son diferenciables tanto en la variable s como en t sepuede hablar de su variacion tanto espacial como temporal. En este sentido, se denota por x(s) a laderivada de una curva parametrica extendida x con respecto al tiempo:

x(s, t) =∂x∂t

(s, t) (3.2)

de modo similar, la derivada posicional de la curva parametrica x(s, t) se denota como x′(s, t). A saber:

x′(s, t) =∂x∂s

(3.3)

A lo largo de este capıtulo se tratara en general con curvas parametricas extendidas. Consecuentemente,se obviara el termino extra t en la parametrizacion de la curva. La notacion de x se puede extender paracubrir derivadas con respecto al tiempo de nivel superior: x para la segunda derivada o aceleracion, etc.

Una barra de Kirchhoff se puede pensar como un cilindro deformable que se mueve en el tiempo yel espacio, en el cual una curva parametrica extendida segun la definicion 3.1 actua como un eje principalo eje central [25]. Los demas ejes de movimiento se pueden expresar a traves de un sistema de referenciamovil anadido a la curva que permiten generar la estructura cilındrica de esta, y la describen unıvoca-mente. Dado que la curva parametrica extendida se mueve en el tiempo y en el espacio es preciso definirun marco de referencia dependiente del tiempo que permita generar la barra en cualquier posicion y encualquier instante de tiempo.

Definicion 3.2.2 (Sistema de referencia dependiente del tiempo) Sea x : [a, b] × R+ → R3 unacurva parametrica extendida conforme a la definicion 3.2.1. Un sistema de referencia dependiente deltiempo asociado a la curva x es una tripleta de vectores:

m1(s, t),m2(s, t),m3(s, t) (3.4)

que asigna un sistema de referencia de R3 a cada punto sobre la curva en cada instante de tiempo t.

En el modelo de Kmoch, Baraff et al.[13, 25] los cabellos se modelan mediante barras Kirchhoff o barraselasticas. En una barra elastica, la longitud es significativamente mas grande que en sus otras dos di-mensiones (ancho y profundidad o la seccion transversal). La configuracion de una barra es enteramentedescrita por la posicion de su centro o eje central (una curva parametrica extendida), mientras que suforma transversal, su curvatura y su torsion a traves de marcos materiales.

Page 21: C omputo y Simulaci on del Cabello Humano

3.2. BARRAS DE KIRCHHOFF 21

Definicion 3.2.3 (Barra de Kirchhoff) Una barra de Kirchoff Γ(s, t) es una tupla:

Γ(s, t) = x(s, t), t(s, t),m1(s, t),m2(s, t) (3.5)

donde x(s, t) es una curva parametrica extendida describiendo el eje central de la curva y t(s, t),m1,2(s, t)es un sistema de referencia movil asociado a x. El vector t(s, t) es paralelo al vector tangente de la curvax′(s, t).

Gracias a la definicion anterior podemos discretizar un cabello humano como una barra de Kirchhoff,permitiendonos calcular los marcos de referencia que determinan el comportamiento y forma de la barra,ajustando sus propiedades para cumplir con el modelo.

3.2.2. Marcos de referencia usuales

Se pueden definir varios marcos en una barra de Kirchhoff: Frenet (refierase al capıtulo 1), Bishop ymaterial. Estos marcos de referencia determinan el comportamiento

Al saber que la torsion es un escalar, esta se podrıa expresar usando una variable; por ejemplo expresar elmarco material como una rotacion del marco de libre de torsion (Ver figura 3.2 para una representaciondel marco de bishop):

Definicion 3.2.4 (Vector de Darboux) Sea x(s, t) una curva parametrica extendida y denote porT(s),N(s),B(s) su aparato de Frenet. El Vector de Darboux del marco T(s),N(s),B(s) es el vectorΩ(s, t) tal que:

T′ = Ω×TN′ = Ω×NB′ = Ω×B

(3.6)

El vector de Darboux es una combinacion lineal del vector de torsion B y el de curvatura N. A saber,

Teorema 3.2.5 Para una curva parametrica x con vector tangente T, vector normal N y vector binormalB su vector de Darboux Ω satisface la igualdad:

Ω = τN + κB (3.7)

donde κ y τ representan la curvatura y la torsion.

Entre los posibles marcos de referencia moviles sujetos a una curva x, tenemos un interes particular enun marco que sea libre de torsion[25]. Un marco libre de torsion es rıgido y se mueve de manera naturalcon la curva y permite la definicion de la curvatura, la energıa y la elasticidad de manera mas simple. Enun marco libre de torsion, τ = 0, con lo cual el vector de Darboux satisface la ecuacion:

Ω = κB (3.8)

El marco de Bishop se construye a partir del transporte paralelo de un vector a lo largo de la curva: unatraslacion sin rotacion que sigue la direccion de la curva.

Definicion 3.2.6 (Transporte paralelo de un vector) Sea x : [a, b] → Rn una curva parametrica yv ∈ Rn un vector tangente a la curva x. El transporte paralelo del vector v desde la posicion x(s0) hastala posicion x(s1) esta definido por una funcion S : [s0, s1]→ Rn de tal manera que

S(u)||v (3.9)

para todo u ∈ [s0, s1].

Page 22: C omputo y Simulaci on del Cabello Humano

22 CAPITULO 3. MODELO DE SIMULACION DE CABELLO EN TIEMPO REAL

En general, el transporte paralelo se puede efectuar mediante una matriz de rotacion que rota el vectorapropiadamente para mantener el paralelismo a lo largo de la trayectoria de este. La rotacion debeefectuarse definiendo un eje fijo. A saber, la evolucion del marco de Bishop a lo largo de la lınea centralpuede ser expresada usando el vector de Darboux Ω(s) [25].

Definicion 3.2.7 (Marco de Bishop) si x(s, t) es una curva parametrica extendida con dominio [a, b] ⊂R, Sea un marco adaptado:

t(s),u(s),v(s) (3.10)

que es libre de torsion se denomina el Marco de Bishop de la curva x. Este marco se obtiene definiendot(s, t), fijando u(s0) y transportando paralelamente u(s0) por medio de una matriz de rotacion S(s)identificando una rotacion alrededor del vector de Darboux de la curva Ω(s, t). El vector v(s, t) se deducehaciendo

v(s, t) = t(s, t)× u(s, t) (3.11)

Figura 3.2: Curva parametrica (azul) con su representacion del marco de Bishop (violeta)

3.2.3. Relaciones entre los marcos

Representacion del marco material dado que tanto el marco material (vea figura 3.3 ) como el marcode Bishop son definidos en los bordes:

Page 23: C omputo y Simulaci on del Cabello Humano

3.2. BARRAS DE KIRCHHOFF 23

Figura 3.3: Marco material (vectores verdes y azules perpendiculares a la curva)

Figura 3.4: Diagrama de vectores influyentes en la curva. Imagen tomada de [3]

Page 24: C omputo y Simulaci on del Cabello Humano

24 CAPITULO 3. MODELO DE SIMULACION DE CABELLO EN TIEMPO REAL

Teorema 3.2.8 (Marco Material) Dada θi como el angulo necesario para rotar el marco de Bishopdentro del marco material vea figura 3.4. Por lo tanto los vectores del marco material son:

mi1 = cos θ(s, t)i · ui + sin θ(s, t)i · vi

mi2 = sin θ(s, t)i · ui + cos θ(s, t)i · vi

(3.12)

El marco material y el marco de Bishop se relacionan a traves de un angulo que midel el angulo entreellos y que ayuda a determinar la torsion que hay en ese punto de la curva es decir la torsion se puededefinir por:2.3.6

3.2.4. Propiedades fısicas

Las barras de Kirchhoff poseen adicionalmente a la torsion propiedades fısicas que el modelo consid-era, calcula y evalua, durante la simulacion. Ademas de estructura, estas propiedades definen el compor-tamiento que tendra la barra en cierto instante de tiempo y se adaptan de acuerdo al escenario que estenexpuestas:

Inextensibilidad Esta propiedad se refiere a la capacidad que tiene el cabello a no extenderse masde lo comun, es decir, las hebras mantienen su longitud original desde que inicia hasta que termina lasimulacion, manteniendo de esta manera los calculos de la fuerza estables sin necesidad de computarcuerpos con nuevos valores de longitud.

Nodos El modelo presentado por Kmoch et al. define una barra de Kirchhoff como un conjunto depuntos unidos. Un nodo es considerado como un punto que se debe evaluar entre la curva. Especıfica-mente se considera que entre mas puntos se definan en la curva mayor sera el realismo de la simulacionpero ası mismo el rendimiento bajara considerablemente.

Segmentos Los segmentos son lıneas que unen a dos nodos dentro de la curva; mientras existan n + 1nodos se necesitan n segmentos para unirlos y construir la curva.

Isotropıa La isotropıa se refiere a la caracterısta de los cuerpos fısicos que no dependen de la direc-cion que se encuentren. A saber, los nodos y los segmentos de las barras de Kirchhoff son isotropicosporque sin importar su direccion poseen las mismas caracterısticas fısicas.

Anısotropıa En contraste, la anisotropıa es la caracterıstica de los cuerpo fısicos que dependen dela direccion que se evaluen estando esta presente en las barras de Kirchhoff, igualmente como se dijo enla pagina 15 es relevante tener en cuenta que este posee propiedades distintas a lo largo de la longituddel cabello tratado.

3.2.5. Energıa elastica

Entiendase como la energıa elastica de una barra E(Γ) donde:

Γ = Γ(s, t) = x(s, t), t(s, t),u(s, t),v(s, t) (3.13)

es dada por la teorıa de Kirchhoff de la barras elasticas, compuesta por dos componentes: torsion y flexion(debido a nuestra hipotesis de inextensibilidad, no hay componentes de estiramiento), la energıa dependede la tension: la tasa de cambio del marco material, es representada por:

ω1 = t′ ·m1, ω2 = t′ ·m2, m = m1 ·m2 (3.14)

Si se denota el centro de la curvatura k = t′, se puede ver que ω1,2 corresponde a la flexion de la curva atraves de los ejes de la seccion transversal m1,2 mientras m mide la torsion del marco material.

Page 25: C omputo y Simulaci on del Cabello Humano

3.3. DISCRETIZACION DEL MODELO 25

El modelo marca que la flexion de la barra esta descrita por ω = (ω1, ω2)T . La energıa debida a laflexion depende de sus propiedades de flexion de la seccion transversal y su desviacion de la flexionnatural: ‘

Proposicion 3.2.9 (Energıa debido a la flexion) Sea Γ una barra de Kirchhoff de la forma 3.2.3 yconsidere ω = (ω1, ω2)T la tasa de cambio del marco material en el espacio (vease 3.14), la energıa debidoa la flexion Ebend(Γ(s, t)) esta definida por la expresion:

Ebend(Γ(s, t)) =12

∫ L

0

(ω(s, t)− ω(s, t))T B(ω(s, t)− ω)ds (3.15)

donde B es una matriz simetrica de 2 × 2 con valores positivos. La matriz B describe la energıa debidaa la flexion de la barra. ω es la flexion de la cuerda en su estado natural. (Se usa la notacion a paradenotar los valores iniciales de la cuerda antes de que la simulacion de inicio)

Ası mismo la energıa causada por la torsion es definida por:

Proposicion 3.2.10 (Energıa causada por la torsion) Sea Γ una barra de Kirchhoff (3.2.3 y seanω = (ω1, ω2)T la tasa de cambio del marco material en el tiempo 3.14, se representa la energıa debido ala torsion como la expresion:

Etwist(Γ(s, t)) =12

∫ L

0

β(s, t)(m(s, t)− m(s, t))2ds (3.16)

donde β es la rigidez de la torsion; a diferencia del modelo original, nosotros consideramos el estadoinicial de la torsion de la barra, m, para permitir la naturalidad de la torsion de las barras.

Esto admite modelar el cabello estilizado, el cual usualmente envuelve los valores iniciales de la torsion(rulos). Ver figura 3.1 para un ejemplo de la estimacion del estado inicial. La formula anterior relacionala energıa de torsion de los vectores del marco material. Siguiendo las ideas presentadas en [3], fueronutilizados algunos conceptos de geometrıa diferencial expresados usando pocas variables.

3.3. Discretizacion del modelo

Gracias a la teorıa de barras de Kirchhoff (presentada en la seccion anterior) tenemos los conceptosnecesarios para realizar una discretizacion del modelo que se plantea a la hora simular el cabello humanocomo una barra de Kirchhoff (representada por una curva parametrica diferencial). A lo largo esta estaseccion se presentara el planteamiento matematico discretizado, se veran las caracterısticas del pelo quese simularan, se realizara una representacıon discreta del modelo y se mostrara la forma de calcular laenergıa elastica discreta.

3.3.1. Caracterısticas del pelo

Para obtener una representacion discreta de una barra elastica, seguimos las ideas presentadas en[3]. Sin embargo, como el modelo esta destinado para el cabello, tambien consideramos varios aspectosespecıficos del mismo, los cuales nos permiten simplificar el modelo.

Una de las consideraciones mas importantes es que las hebras del cabello generalmente tienen una secciontransversal elıptica, por lo tanto, ellos tienden a inclinarse a traves del eje de su seccion transversal [9].Esta idea ha sido usada para reducir directamente el grado de libertad del modelo del cabello presentadoen [18]. Sin embargo, nosotros podemos usar esta idea para guiar nuestra computacion de la torsion,determinando la flexion de la lınea central.

Page 26: C omputo y Simulaci on del Cabello Humano

26 CAPITULO 3. MODELO DE SIMULACION DE CABELLO EN TIEMPO REAL

3.3.2. Representacion discreta

Dada una barra Γ(s, t) = x(s, t),m1(s, t),m2(s, t), nosotros discretizamos la lınea central en n + 2nodos: x0, . . . ,xn+1 conectados por n+ 1 segmentos e0, . . . , en donde cada segmento es definido por:

Definicion 3.3.1 (Segmento) Dado el conjunto de n + 2 puntos x0, . . . ,xn+1 se define un segmentocomo:

ei = xi − xi−1 (3.17)

Donde la tupla xi,xi−1 son nodos continuos en la curva. Vea figura 3.6

A lo largo del documento se expresaran como subındices las cantidades asignadas a los nodos y comosuperındices las cantidades asignadas a los segmentos.

El angulo entre el marco material y el marco de Bishop define discretamente la torsion que existe enun punto de la curva. En la siguiente subseccion se definen otras propiedades fısicas que se tienen encuenta al momento de realizar el computo de las fuerzas influyentes en el sistema.

Teorema 3.3.2 (Representacion de la torsion) Definimos una funcion escalar θ(s) la cual mide elangulo (alrededor del tangente) entre el marco material y el marco de Bishop:

m1 = cos(θ)u + sin(θ)v

m2 = sin(θ)u + cos(θ)v(3.18)

Esto nos permite expresar la torsion como m(s) = θ′(s). Ası, nosotros hemos expresado la energıa elasticade la cuerda usando 4 dimensiones: una posicion central tres-dimensional x(s) y un angulo escalar entreel marco material y el marco de Bishop θ(s).

El modelo le asigna un marco material (vea definicion 3.2.8) tj ,mj1,m

j2 a cada segmento j (ver figura

3.5 ). Se debe tener en cuenta que la asinacion es unica, considerando que un nodo tangente a una curvapoligonal es generalmente ambiguo. Nosotros mantenemos el requerimiento de que el marco debe seradaptado al centro de la curva, significa que:

tj =ej

||ej ||(3.19)

Cantidades integradas como se muestra en [3], una distincion puede ser hecha entre cantidadesdefinidas punto a punto y estas representan un valor integrado sobre el dominio. Cuando una canti-dad integrada es asociada con un nodo, este dominio es mas cercano a las mitades de los segmentosasignados a los nodos. Por cada nodo xi, el dominio tiene la longitud li/2, donde li = |ei+1|+ |ei|.

3.3.3. Energıa elastica discreta

A lo largo de esta seccion se discretizara la energıa elastica usando las definiciones estudiadas anteri-ormente, energıa debido a la torsion 3.16 y la energıa causada por la flexion 3.15. Recuerdese la definiciondel vector de Darboux 3.2.4 para una curva parametrica extendida 2.1.1. La version discreta del vectorde Darboux Ω(s, t), a saber, Ωi esta dado por:

Definicion 3.3.3 (Discretizacion vector de Darboux) Sea Ω(s, t), a saber Ωi discretamente se puederepresentar por la ecuacion:

Ωi = 2ei−1 × ei

|ei−1||ei|+ ei−1 · ei(3.20)

Reresentado una combinacion lineal del vector de torsion y el vector de curvatura.

Page 27: C omputo y Simulaci on del Cabello Humano

3.3. DISCRETIZACION DEL MODELO 27

Figura 3.5: Cabello discretizado en 30 segmentos de 1cm. Imagen tomada de [13].

Gracias a la anterior definicion podemos discretizar tambien la tasa de cambio del marco materialteniendo en cuenta la ecuacion 3.14:

Definicion 3.3.4 (Razon de cambio del marco material en el espacio en razon del tiempo) SeaΩi una combinacion lineal del vector de torsion y el vector de curvatura, discretizando la ecuacion 3.14definimos que:

ωji = ((Ω)i ·mj

2,−(Ω)i ·mj1)T para j ∈ i− 1, i (3.21)

La cual describe la razon de cambio que tendra el marco material en razon del tiempo.

Para i = 1, . . . , n (por segmentos). A partir de este se puede discretizar la energıa debida a la flexion(vease proposicion 3.2.10) por medio de:

Ebend(Γ) =n∑

i=1

1

2li

i∑j=i−1

(ωji − ω

ji )T Bj(ωj

i − ωji ) (3.22)

En un modelo de simulacion de pelo basado en barras de Kirchhoff cada una de estas se flexiona sobresu eje de la seccion transversal (sobre el plano m1,2)[25]. En este sentido, la energıa debida a la flexuradepende de los vectores m1 y m2. En general, la energıa debida a la flexion de una barra elastica se midemediante la curvatura de su eje principal. A saber,

Ebend(Γ) =∫κ(s)2ds =

∫||N(s)||2ds (3.23)

En efecto, revısese [25, 4, 3] entre otros. Sin embargo, en aras de permitir comportamiento anisotropico,la norma del vector de curvatura debe ser reemplazada por una forma bilineal tal y como se muestra en laproposicion 3.2.10. Esta matriz B se conoce como la matriz de Rigidez de la barra elastica. Discretamente,no hay razon por la cual la barra sea isotropica o anisotropica en su totalidad. Teniendo esto en cuenta,se define para cada segmento una matriz Bj que permite cuantificar individualmente la energıa debida ala flexion en un segmento dado.

Page 28: C omputo y Simulaci on del Cabello Humano

28 CAPITULO 3. MODELO DE SIMULACION DE CABELLO EN TIEMPO REAL

Proposicion 3.3.5 (Matriz de Rigidez) Si Γ es una barra de Kirchhoff elastica discreta de n segmen-tos, defina αj , j = 1, . . . , n la resistencia de la barra a la flexion en el segmento j. Si µ es una constantearbitraria se define la matriz de rigidez de Γ en el segmento j como la matriz,

Bj =

µαj 0

0 αj

(3.24)

esta matriz determina una forma bilineal con la cual se calcula la energıa de flexion de la barra Γ en elsegmento j de manera discreta, en conformidad con la proposicion 3.2.10.

El marco de Bishop se puede discretizar utilizando transporte paralelo. discretizando directamente ladefinicion 3.2.7:

Proposicion 3.3.6 (Marco de bishop discretizado) Sea u0 definido como el nodo raız de la barrade Kirchhoff y el transporte paralelo a lo largo de la curva, A saber obtentemos ui = Pi(ui−1). Es decirel marco de bishop es representado por:

vi = ti × ui (3.25)

Segun la definicion de energıa elastica dada (3.2.10), es preciso discretizar el vector ω (3.14). Una dis-cretizacion por diferencias finitas es facil de obtener y se omite en este punto (vease [25] y [3] para masinformacion). De manera similar, es posible definir la energıa debida a la torsion utilizando el marco deBishop definido, discretizando la ecuacion 3.16. En este caso, definimos θj como el angulo por el cual hayque rotar el marco de Bishop del segmento j para obtener el marco material. A saber:

m1 = cos θjuj + sin θjvj

m2 = − sin θjuj + cos θjvj (3.26)

En analogıa directa del caso continuo, se define la energıa debida a la torsion como:

Etwist(Γ) =n∑

i=1

β(mi − mi)2

li, donde mi = θi − θi−1 (3.27)

De esta manera se discretiza las ecuaciones influyentes en el modelo presentado por Kmoch et al. [13]

3.4. Actualizacion del marco material

Anteriormente discretizamos el modelo que se usara para simular el comportamiento del cabellohumano. A lo largo de esta seccion presentaremos la forma de iterar el sistema para que se adapte alos cambios que tendra con el paso del tiempo. Es decir, mostraremos como realizar la actualizacion delmarco material en cada iteracion del algoritmo.

3.4.1. Torsion optimizada del Cabello

Anteriormente discutimos que los cabellos no se flexionan sobre el eje menor (es decir la raız). Elcamino teorico para representar esta situacion podrıa ser una rigidez infinita sobre el eje menor. En lapractica, esto podrıa ser representado como un valor muy alto de rigidez µ. Desafortunadamente, estopodrıa resultar en ecuaciones rıgides de movimiento y la minimizacion de Newton podrıa tambien sernumericamente inestable.

Nosotros tomamos un enfoque diferente, manteniendo µ muy pequeno para obtener una pequena pe-nalizacion. Entonces en luhar de una minimizacion de Newton, empleamos un metodo diferente de com-putacion de la torsion sujeta al hecho de que la flexion sobre el eje menos es despreciable.

Page 29: C omputo y Simulaci on del Cabello Humano

3.5. SIMULACION 29

Para eliminar la flexion sobre el eje menor completamente, el cabello tendrıa que torcer a medida deque el ultimo eje sea paralelo al binormal de la curvatura en cada nodo. En nuestro modelo, la flexionocurre en los nodos, mientras que los marcos materiales son asignados a los segmentos. Esto significaque no es posible prevenir completamente la flexion sobre los primeros ejes de la curva, como los no-dos xj ,xj+1 probablemente requerira una direccion diferente para el eje final mj

1. Entonces en lugar derealizar este procedimiento, nosotros computamos la torsion la cual minimiza minimiza la flexion. Enefecto, nuestra computcion es dividida en dos pasos:

1. Encontrar (desorientadas) direcciones de los ejes mayores de cada segmento j ası este minimiza el laflexion sobre el eje menor en los nodos xj y xj+1. Esto fija el valor de θj hasta un multiplo enterode π.

2. Encontrar el eje de orientacion dentro de la direccion obtenida en el paso anterior, entonces estominimiza la energıa elastica. Este determina θj completamente encontrando el multiplo de π a usar.

El primer paso es ilustrado en la figura 3.6 . Este procesa los segmentos independientemente y entoncespuede ser calculado en paralelo. Para cada segmento j el cual no esta sujeto, nosotros encontramos losangulos ηj,j+1 entre los ejes del marco de Bishop uj y los respectivos nodos binormales, (kb)j,j+1. Noteseque como los binormales de la curvatura son perpendiculares a los segmentos, todos los vectores envueltosson complanares. θj es obtenida desde ηj,j+1 de la siguiente manera:

1. Si ninguno de los dos (kbj,j+1) es 0, θj = 12 (ηj + ηj+1).

2. Si solo (kbk) no es cero, θj = ηk.

3. Si ((kbj,j+1) ambos son 0, θj = θj

El segundo paso no determina cual de los θj , (θj +π) y θj−π minimiza la energıa elastica. Denotamosla energıa computada con este marco material E0, E+ y E−, respectivamente. Desde la definicion deE(Γ) los siguientes criterios son definidos:

E+ < E− ⇔ θj < θj

E0 < E+ ⇔ −2Bjωji < 2βπ(θj − θj) + βπ2

E0 < E− ⇔ −2Bjωji < −2βπ(θj − θj) + βπ2

(3.28)

donde ωji es el producto por componentes de ωj

i y ωji . Usando estos criterios, el valor correcto de θj

a usar puede ser encontrado facil y rapidamente.

3.5. Simulacion

Ahora nosotros ensamblamos las ecuaciones de movimiento. Recuerde que la torsion es tratada cuasi-estaticamente y por lo tanto no es parte de la simulacion dinamica. Entonces, para la ecuaciones demovimiento, θj no son variables independientes, pero pueden ser expresadas usando x1.

3.5.1. Ecuaciones de movimiento

Las ecuaciones de movimiento manejan el comportamiento de la barra elastica son para i = 0, . . . , n+1:

M1xi = F elastici (x) + F external

i (x, x) (3.29)

Mi es la masa del nodo i. F elastici es la fuerza interna elastica que afecta al nodo i. F external

i es la fuerzaexterna total que afecta al nodo i. En el escenario de la simulacion, usamos gravedad y friccion combinado

Page 30: C omputo y Simulaci on del Cabello Humano

30 CAPITULO 3. MODELO DE SIMULACION DE CABELLO EN TIEMPO REAL

Figura 3.6: Computando la orientacion del marco material θj del segmento j para minimizar la flexionsobre los ejes menores de los nodos j, j + 1 Estableciendo θj a la medida de los angulos orientados ηj yηj+1. Imagen tomada de ??

con el ambiente estatico del aire: F externali = Mig − vxi, donde g es la aceleracion gravitacional y v es

el coeficiente de friccion del aire. Las ecuaciones de movimiento estan integradas usando el metodo deEuler [5].

3.5.2. Fuerzas elasticas

La fuerza elastica es esfuerza en minimizar la energıa elastica, entonces nosotrso podrıamos simple-

mente escribir F elastici = −dE(Γ)

dx1la derivdad total de la energıa elastica se tiene en cuenta tnato en

la dependencia explıcita sobre la posicion central y una dependencia implıcita en esta via el marco ma-terial. Sin embargo, para obtener una formula integrable, nosotros debemos substitiur dentro del totalderivativo:

− dE(Γ)dxi

= −∂E(Γ)∂xi

−n∑

j=0

∂E(Γ)∂θj

∂θj

∂xi(3.30)

Ahora analizaremos los componentes individuales de esta expresion; usaremos la siguiente notacion:

∇i =∂

∂xi,∇j =

∂θj.

Holonomıa: Para expresar las derivadas de la energıa, usaremos el concepto de holonomıa. En nuestrocaso, holonomıa ψ es una diferencia (escalar) de la rotacion del marco material causada por una tem-poral evolucion del centro de la barra. Diremos que ψi es el angulo entre tP (Pi(ti−1)) y Pi(tP (ti−1)).Para una descripcion completa de este concepto, refierase a [3], de donde nosotros tomamos el gradienteholonomico:

∇i−1ψi =(kb)i

2|ei−1|, ∇i+1ψi = − (kb)i

2ei

∇iψi = −(∇i−1ψi +∇i+1ψi)

(3.31)

Nosotros podemos extender este concepto para atravesar mas de un segmento, como la holonomıa esaditiva. Nosotros definimos Ψj =

∑ji=1 ψi para ser la rotacion necesaria para alinear tP (P1(. . . (Pj(u0)) . . . ))

Page 31: C omputo y Simulaci on del Cabello Humano

3.6. LIMITES Y COLISIONES 31

hasta P1(. . . (Pj(tP (u0))) . . . ). El gradiente de este angulo es simple ∇iΨj =∑j

k=1∇iψk. Tenga en cuen-ta que ∇iψk no pueden ser en al menos 3 valores de k.

Ψj describe que tanto rota el marco de Bishop cuando el centro se envuelve sobre el tiempo. Desdeque nosotrso definimos el marco material relativo al marco de Bishop, debemos substraer este angulopara matener el marco material alientado correctamiente. En orden de ideas, esto nos da una rotacion

del marco material con respecto a las posiciones centrales:∂θj

∂xi= −∇iΨj .

Derivadas Posicionales: Nosotros ahora analizamos∂E(Γ)∂xi

=∂Ebend(Γ) + Etwist(Γ)

∂xi. Etwist(Γ) no de-

pende en x explıcitamente, entonces ∇iE(Γ) = ∇iEbend(Γ). El gradiente toma la siguiente forma:

∂E(Γ)∂xi

=n∑

k=1

1

lk

k∑j=k−1

(∇iγjk)T B(γj

k − γjk) (3.32)

Derivadas de torsion: Pasamos ahora a∂E(Γ)∂θj

A raız de las expresiones de energıa relevantes, obten-emos:

∂Ebend(Γ)∂θj

= ∇jWj +∇jWj+1

∂Etwist(Γ)∂θj

= 2β(mj

lj− mj+1

lj+1

)

donde∇jWi = 1li

(ωji )T JBj(ωj

i − ωji )

(3.33)

Fuerza elastica total: Recordando que la torsion de segmentos no sujetados son computados paraminimizar la energıa elastica. Por lo tanto, ∇jE(Γ) = 0 para j /∈ C. Esto significa que el total de lafuerza elastica que actua sobre el nodo i es:

F elastici = −∂E(Γ)

∂xi+∑j∈C

∂E(Γ)∂θj

∇iΨj (3.34)

3.6. Lımites y colisiones

Nuestro esquema de integracion no posee ningun mecanismo para mantener la inextensibilidad, evi-tando la complejidad de la ecuacion. En [3], un paso de postintegracion refuerza las restricciones para lainextensibilidad y el acomplamiento de barra a los cuerpos rıgidos. Nosotros tomamos esta idea ademaspara usar resctricciones para manejar eficientemente las colisiones entre los cabellos.

3.6.1. Tipos de restricciones

El modelo puede usar alguna de las siguientes restricciones. Cada restriccion es representada por unvalor el cual es 0 cuando la restriccion es satisfecha; estas son reunidas dentro de un vector de restriccionesC.

Inextensibilidad (ver secciones anteriores): Para cada segmento, definimos una restriccion de inexten-sibilidad CIj = ej · ej − ej · ej .

Acoplamiento a un cuerpo rıgido: Cualquier nodo o segmento puede ser acoplado (unido) a un cuerporıgido. En el escenario del cabello, esto es solo usado para ajustar la raız del segmento a la cabeza. Esto

Page 32: C omputo y Simulaci on del Cabello Humano

32 CAPITULO 3. MODELO DE SIMULACION DE CABELLO EN TIEMPO REAL

nos permite expresar las restriccion de acoplamiento de una forma simple: CR0 = x0−x0, CR1 = x1−x1

Colisiones entre los cabellos Despues del paso de integracion, todos los nodos son la prueba deimpenetracion con la cabeza. Los nodos son unidos dentro de un conjunto P y estan sujetos a la restric-cion CHi = (xi − h) · (xi − h) − r2 para i ∈ P , donde h es el centro de la cabeza y r es el radio de lamisma. En teorıa, los nodos orginialmente no estan en P podrıan no chocar con la cabeza gracias a lasubicaciones durante la ejecucion de la restriccion. Por motivos de rendimiento olvidamos esta situacion;los nodos que chocan seran detectados y tratados en el siguiente paso del tiempo. Gracias a la duraciondel paso del tiempo es solo 1ms, tales interpretaciones ligeras no se notan.

3.6.2. Ejecucion de las restricciones

Las restricciones son ejecutadas por una rapida proyeccion multiple [23]. Este metodo toma unaconfiguracion sin restricciones e iterativamente computa una configuracion cercana la cual satisface las

restricciones. Definimos en terminos de energıa cinetica12yMyT , donde M es una 3(n + 3) × 3(n + 3)

matriz de masa diagonal y y ∈ R3)(n+3) es un sistema de velocidad de:

diag(M) = (MH ,M0, . . . ,Mn+1) y = (h, x)T (3.35)

donde MH es la masa de la cabeza con respecto al nodo i.Despues la iteracion convergem actualizamos las velocidades de los nodos, como en [23]: xi ← xi −

1h

∆xi. Tenga en cuenta que por la masa insignificamnte del pelo comparada con la masa de la cabeza,no consideramos el movimiento de la cabeza en respuesta a las reubicaciones de los nodos del cabello. Laproyeccion del metodo reposiciona los nodos ligeramente. Especialmente es util para nuestro tratamientode las colisiones de cabello, como la salida no exhibe un comportamiento inestable, a menudo causadopor el uso de fuerzas de penalizacion..

Page 33: C omputo y Simulaci on del Cabello Humano

Capıtulo 4

Simulador de cabello

En los dos capıtulos anteriores estudiamos tanto los conceptos preliminares como el planteamientohecho por Kmoch et al. [13]. En el capıtulo 2 estudiamos la teorıa matematica que se debe manejarpara poder comprender la teorıa de Barras de Kirchhoff y el planteamiento hecho por [13]. Ası mismo,en el capıtulo 3 estudiamos el modelo planteado para simular el cabello como una barra elastica deKirchhoff, discretizamos el modelo y realizamos una descripcion general de la estructura del algoritmoa implementar. A lo largo de este capıtulo mostraremos la implementacion que se realizo para intentarconstruir un simulador que implemente toda la teorıa que muestra el modelo planetado por Kmoch et al.[13].

4.1. Herramientas utilizadas

Durante esta seccion describiremos las herramientas utilizadas para el desarrollo de la aplicacion,el ambiente operacional, y la estructura de archivos utilizados en la implementacion. Ası mismo se re-alizara explicacion de cada una de las herramienta utilizadas para el desarrollo de la aplicacion.

4.1.1. Java y Processing

Processing es un lenguaje de programacion y un ambiente de codigo abierto1 creado para com-putacion grafica y poder desarrollar, animaciones, e interacciones. Este es usado por estudiantes, artistas,disenadores e investigadores para el aprendizaje, simulacion y produccion. Este es creado para ensenartecnicas fundamentales de programacion dentro de un contexto visual y sirve como herramienta funda-mental de produccion. Processing usa el nucleo del lenguaje de programacion Java permitiendonos deesta manera usar todas las ventajas que posee este lenguaje de programacion orientado a objetos.

Adicionalmente, processing anade metodos propios que facilitan la simulacion de varios objetos y per-mite una programacion mas sencilla de ambientes graficos permitiendo programar simuladores de maneracomoda y estable, entre ellos, usa dos metodos importantes para la incializacion y ejecucion del progra-ma void setup() y void draw() que son definidos dentro del archivo principal usados por processingpara incializar la simulacion. El metodo void setup() es llamado tan pronto como inicia la simulacion,siendo este utilizado para definir el ambiente principal ası como el tamano que ocupara la ventana desimulacion, el color de fondo, cargar imagenes, cargar fuentes, etc. Adicionalmente a esto es utilizado parala inicializacion de las variables usadas durante la ejecucion del programa. El metodo void draw() esllamado directamente despues del metodo setup y continuamente ejecuta las lineas de codigo que estancontenidas dentro del metodo, este nunca para su ejecucion a menos que el programa sea finalizado o el

1Codigo abierto es el termino con el que se conoce al software distribuido y desarrollado libremente. El codigo abiertotiene un punto de vista mas orientado a los beneficios practicos de compartir el codigo que a las cuestiones morales y/ofilosoficas las cuales destacan en el llamado software libre.

33

Page 34: C omputo y Simulaci on del Cabello Humano

34 CAPITULO 4. SIMULADOR DE CABELLO

metodo noLoop() sea llamado. La funcion draw() es llamada automaticamente y no debe ser llamadaexplıcitamente.

En las secciones posteriores veremos con mayor profundidad el uso de estas herramientas para crearla aplicacion. A medida que se avance se explicara con detalle el uso de java y processing para crear elsimulador que implementa el modelo planteado por Kmoch et al. [13].

4.2. La arquitectura de la aplicacion

A lo largo de esta seccion describiremos la arquitectura de la aplicacion, plantearemos el diagramade clases y discretizaremos cada uno de los componentes, metodos y atributos que posee cada una de lasclases. Ası mismo El diagrama de clases describe la estructura funcional de la aplicacion. En este caso sepresentan cuatro clases que son las que componen la aplicacion. A continuacion describiremos cada unade las clases su estructura, sus atributos y sus metodos mas importantes. (Vease figura 4.1)

4.2.1. Clase tesis simulacion de pelo

Esta clase es la principal (equivalente al main en java) dentro de programa, este es el archivo raızdesde el cual processing comenzara la ejecucion de cada una de las instrucciones escritas en el. En estaclase se encuentran los dos metodos descritos en la seccion anterior setup y draw.

Atributos: Esta clase posee 15 atributos los cuales son mencionados a continuacion:

1. nDVector[] aceleraciones: Es un arreglo de objetos de clase nDVector (vease seccion de clasenDVector) esta estructura de datos almacena las aceleraciones que poseen cada una de las curvasparametricas en la interaccion del programa.

2. float factorEscala: El factor de escala es un escalar de tipo float que nos define la escala a lacual voy a mostrar la curva, esta misma me ayuda a definir el centro de la curva porque me ayudaa calcular las coordenadas donde se encuentra.

3. PFont fuente: La variable fuente es un tipo de archivo que me define la fuente que voy a utilizardentro del simulador en las inserciones de texto.

4. float fuerza: el atributo fuerza captura la magnitud de un evento asociado al mouse que capturael movimiento mientras se oprime el click izquierdo del mismo.

5. CurvaParametricaDiferencial[][] miCurva: miCurva es una matriz que almacena todas y cadauna de las curvas que se van a definir, es decir, si se define que se modelaran 25 cabellos se definemiCurva como una matriz de 5×5. Esta variable es llamada constantemente en el programa debidoa que sera la que se debe iterar constantemente.

6. int numPuntos: Este entero sera el que define que tantos nodos estaran en cada una de las curvas(recuerdese el capıtulo anterior la definicion de nodo), entre mas nodos se definan mayor sera laprecision del programa pero menor sera su rendmiento.

7. float rotX, rotY como el programa es capaz de rotar el plano a la direccion escogida por elusuario con el movimiento de su mouse rotX y rotY indican que tanto se debe rotar el plano encada una de las direcciones x y y.

8. nDVector[] velocidades: Es un arreglo de tipo nDVector que almacenla las velocidades que poseencada una de las curvas parametricas en la interaccion del programa.

Metodos: Los metodos que posee esta clase son mencionados a continuacion:

Page 35: C omputo y Simulaci on del Cabello Humano

4.2. LA ARQUITECTURA DE LA APLICACION 35

1. void dibujarPlano(): Dibuja el plano donde todos as curvas estan ancladas se considera la raızde todos los cabellos.

2. void draw(): Metodo iterativo propio de processing que nunca para de ejecutarse a menos queexista un noLoop() o se pare el programa.

3. void setup(): Primer metodo que se llama en processing es usado para incializacion de variablesy del ambiente de programacion.

4. void mousePressed(): metodo que captura el evento de cuando un mouse es presionado. Es utl-izado para capturar las coordenadas inciales del mouse cuando se oprime, para calcular la fuerza.

5. void mouseDragged(): metodo que captura el evento cuando el click del mouse se encuentra oprim-ido, es utilizado para mover el plano cartesiado y apreciar de otro angulo la simulacion.

6. void mouseReleased(): metodo que captura el evento cuando el click del mouse se suelta, esutilizado para capturar su coordenadas finales y calcular la fuerza que se hizo con el mouse paramover la curva.

7. void plotAxis(): Funcion que dibuja un cubo en el simulador para realzar el ambiente de un planocartesiano 3D.

Esta clase es la encargada de la ejecucion total del simulador y es la que se encarga de llamar a losobjetos de las otras clases y realizar los calculos necesarios.

4.2.2. Clase nDVector

Un vector es una entidad fısica con magnitud y direccion que representa un elemento en un espaciovectorial, durante los capıtulos anteriores definimos como vectores varias cantidades fısicas. A continuaciondefiniremos la clase vector nDVector que nos define una estructura dos o tres dimensional segun se necesite:

Atributos: Esta clase posee 2 atributos los cuales son:

1. float components[] este arreglo de tipo float almacena los componentes x, y, z propios de unvector.

2. int dimension esta variable de tipo int define de que dimension sera el vector que se estara creandosi de dos o tres dimensiones.

Metodos: las operaciones basicas entre vectores estan definidas en la clase vector lo que nos facilitamuchısimo el trabajo para operaciones posteriores entre vectores.

1. nDVector addVector(nDVector v) Este metodo lo que hace es recibir un vector como parametroy suma sus componentes con el vector que hace el llamado al metodo.

2. float angle(nDVector v) angle es la funcion que recibe un vector y retorna una variable de tipofloat que determina el angulo que se forma entre ese parametro y el vector que hace el llamado almetodo.

3. float getComponent(int i) De acuerdo al entero que el metodo reciba, entre 0, 1, 2 el metodoretorna el valor del componente x, y, z del vector.

4. float getComponent(char c) De acuerdo al caracter que el metodo reciba, entre x, y, z el metodoretorna el valor del componente x, y, z del vector.

5. int getDimension() Retorna la dimension a la que pertenece el vector.

6. nDVector() Constructor por defecto de la clase.

Page 36: C omputo y Simulaci on del Cabello Humano

36 CAPITULO 4. SIMULADOR DE CABELLO

de clases simualdor.png

Figura 4.1: Diagrama de clases simulador de cabello implementado en procesing

Page 37: C omputo y Simulaci on del Cabello Humano

4.2. LA ARQUITECTURA DE LA APLICACION 37

7. nDVector(float x, float y) Constructor de la clase que inicializa un vector de dos dimensiones.

8. nDVector(float x, float y, float z) Constructor de la clase que inicializa un vector de tresdimensiones.

9. void plotAnchoredVector(nDVector v, color colorVector) Dibuja el vector que hace el lla-mado anclado al vector que se recibe como parametro del color que recibe por parametro.

10. void plotAsPoint(color colorVector) Dibuja el vector como un punto en el espacio.

11. void plotAsVector(color colorVector) Dibuja el vector como una lınea en el espacio.

12. float dotProduct(nDVector v) este metodo retorna el producto punto entre el vector que haceel llamado al metodo y el vectorque se recibe como parametro.

13. nDVector scalarProduct(float i) este metodo retorna el producto del vector que hace el llama-do con el escalar que se pasa por parametro.

14. void setComponent (int i, float a ) este metodo establece el valor del componente que lediga el ındice i con el valor recibido en a.

15. void setComponent (char i, float a ) este metodo establece el valor del componente que lediga el caracter i con el valor recibido en a.

Gracias a esta clase podemos definir la estructura de datos mas usada durante todo el programa, ygracias a ella las operaciones entre vectores son bastante sencillas y rapidas.

4.2.3. Clase Curva Parametrica

Esta clase modela las curvas parametricas diferenciales de una forma general es decir define unosmetodos como una clase abstracta pero implementa otros como una clase concreta:

Atributos Los atributos que posee la cuva parametrica son:

1. nDVector centro: Esa variable representa el punto central de la curva parametrica.

2. int numPuntos: Este entero establece el numero de nodos que tendra la curva. Recuerdese que entremas nodos se definan mas preciso sera el movimiento y la simulacion pero ası mismo el rendimientode la aplicacion baja considerablemente.

3. nDVector[] puntos: Este arreglo de tipo nDVector establece y almacena cada uno de los nodosque tendra la curva. (vease seccion 3.2.3).

Los metodos definidos en esta clase implıcitos, es decir, se encuentran las firmas de los metodos perono hay ninguna implementacion pero algunos son explıcitos, a continuacion describiremos la funcion quecumplen los metodos explıcitos:

1. curvaParametrica(int numPuntos): Constructor que inicializa la curva parametrica de acuerdoal numero de puntos.

2. nDVector funcionParametrica(float t): Esta funcion discretiza la curva parametrica con losparametros que son definidos en xFunction(), yFunction(), zFunction() de acuerdo al parametrofloat t(vease seccion siguiente).

3. nDVector ensamblarCurva(float a, float b): Construye la curva parametrica con los paramet-ros a y b 2.1.1 teniendo en cuenta la funcion parametrica descrita en el ıtem anterior.

4. void dibujarCurva(color colorCurva): Dibuja la curva parametrica del color del parametrocolorCurva.

De esta clase podemos heredar los metodos necesarios para convertirla en una curva parametricadiferenciable y modelar las propiedades de las barras elasticas de Kirchhoff.

Page 38: C omputo y Simulaci on del Cabello Humano

38 CAPITULO 4. SIMULADOR DE CABELLO

4.2.4. Clase Curva parametrica diferencial

Esta clase es una especificacion de la clase mencionada en la seccion anterior, en la cual se modelantodas las propiedades de una barra de Kirchhoff.

Atributos La clase diferenciable posee un conjunto de atributos mucho mas amplio que su clase padre,Estos atributos son:

1. char esquema Esta variable es utilizada para determinar el esquema con el cual se derivara la curvacon respecto al tiempo.

2. nDVector[][] bishopFrames Para representar el marco de bishop planteado en 3.2.7 se usa unamatrız de tipo nDVector, la cual almacena cada uno de los marcos de Bishop para los nodos presentesen la curva.

3. nDVector[][] materialFrames Para representar el marco de material planteado en 3.2.8 se usauna matrız de tipo nDVector, la cual almacena cada uno de los marcos de materiales para los nodospresentes en la curva.

4. nDVector[][] materialFrames Para representar el marco de frenet planteado en 2.3.8 se usa unamatrız de tipo nDVector, la cual almacena cada uno de los marcos de materiales para los nodospresentes en la curva.

5. nDVector[] curvatureBinormal Para representar la curvatura del binormal planteada en 3.2.4 seusa una arreglo de tipo nDVector, la cual almacena cada uno de las curvaturas del binormal paralos nodos presentes en la curva.

6. nDVector[] e Los segmentos presentes en cada una de las curvas son representados por un arreglode tipo nDVector de n posiciones por cada n+ 1 nodos.

7. float[] angleBeteweenTangents este arreglo guarda el angulo que existen entre las curvas tan-gentes de la curva parametrica.

8. float[] angles este arreglo guarda los angulos entre el marco de bishop y el marco de material3.14.

9. nDVector[] eHat este arreglo almacena los segmentos en el estado inicial de la barra es decir, hacenreferencia a los segmentos de tipo e0, . . . , en. Segmentos iniciales de la curva.

10. nDVector[] anglesHat este arreglo guarda los angulos entre el marco de bishop y el marco dematerial iniciales.

11. nDVector[] lHat este arreglo guarda las longitudes iniciales de la curva antes de iniciar la simu-lacion.

12. float[][] w matriz que guarda la discretizacion del vector de Darboux.

13. float[][] B1 esta matriz representa la matriz definida por 3.3.5.

14. float a1, a2, mu recuerdese la proposicion 3.3.5, donde se definen las variables α1, α2, µ.

15. float Ebend variable que almacena la energıa debido a la flexion 3.2.10.

16. float Etwist variable que almacena la energıa debido a la flexion 3.2.9.

De esta manera definimos todos los atributos de las curvas parametricas diferenciables, sin olvidaraquellos heredeados desde la clase curva parametrica. La logica de la implementacion del modelo planteadoen el capıtulo anterior esta en los metodos a continuacion presentaremos los metodos propios de la curvadiferenciable.

Page 39: C omputo y Simulaci on del Cabello Humano

4.2. LA ARQUITECTURA DE LA APLICACION 39

1. curvaParametricaDiferencial() constructor por defecto de la clase.

2. curvaParametricaDiferencial(int numPuntos) constructor que llama a la variable numPuntosdesde su clase padre.

3. primeraDerivada(int i, char esquema) calcula la primera derivada de la curva estimando elesquema de derivacion (progresivo, regresivo, central).

4. segundaDerivada(int i, char esquemaDePrimeraDerivada) calcula la segunda derivada de lacurva estimando el esquema de derivacion que se uso en la primera derivada para evitar inconsis-tencias (progresivo, regresivo, central).

5. torsion(int i, char esquema) retorna el producto cruz entre la primera derivada y la segundaderivada de la curva evaluada en la posicion i con el esquema definido.

6. calcularW1(int i, char esquema) retorna el producto punto entre la primera derivada y la se-gunda derivada y se guarda en un flotante.

7. setHats() metodo que establece el valor de las variables eHat y anglesHat.

8. setLHats() metodo que establece el valor de las variable lHat.

9. setE() metodo que establece el valor del vector de segmentos e.

10. getE() retorna la variable e.

11. setCurvatureBinormal() metodo que establece el valor del arreglo curvatureBinormal.

12. getCurvatureBinormal() metodo que retorna el valor del arreglo curvatureBinormal.

13. setMaterialFrames() metodo que establece el valor de la matriz del marco material materialFrames.

14. getMaterialFrames() metodo que retorna el valor de la matriz del marco material materialFrames.

15. setFrenetFrames() metodo que establece el valor de la matriz del marco de frenet frenetFrames.

16. getFrenetFrames() metodo que retorna el valor de la matriz del marco de frenet frenetFrames.

17. setBishopFames() metodo que establece el valor de la matriz del marco de Bishop bishopFrames.

18. getBishopFames() metodo que retorna el valor de la matriz del marco de Bishop bishopFrames.

19. rotateBishopFames() metodo que rota el marco de bishop alrededor del marco material.

20. setAngles() metodo que estableceel arreglo de angulos.

21. nDVector rotateAbout(nDVector axis, nDVector v, float angle) metodo que rota el marcode Bishop alrededor de un vector definido por parametro.

22. nDVector rotateAbout(nDVector v1,nDVector v2,nDVector v3, nDVector v, float angle)metodo que rota el marco de Bishop alrededor de sus vectores definidos.

23. setW() metodo que establece el valor de la variable W.

24. plotMaterialFrames() dibuja el marco material sobre la curva parametrica.

25. plotFrenetFrames() dibuja el marco de frenet sobre la curva parametrica.

26. plotCurvatureBinormals() dibuja el marco de frenet sobre la curva parametrica.

27. setEbend() metodo que calcula la energıa debido a la flexion.

Page 40: C omputo y Simulaci on del Cabello Humano

40 CAPITULO 4. SIMULADOR DE CABELLO

28. setEtwist() metodo que calcula la energıa debido a la torsion.

29. xFunction(float t) recibe un parametro t y define la funcion para la componente x de la curvaparametrica.

30. xFunction(float t) recibe un parametro t y define la funcion para la componente y de la curvaparametrica.

31. xFunction(float t) recibe un parametro t y define la funcion para la componente z de la curvaparametrica.

De esta forma el modelo de barras de Kirchhoff esta implementado en su totalidad. Cabe citar quepor inconvenientes con las formulas de la holonomıa y de la fuerza elastica no se logro terminar porcompletola implementacion deceada, de igual forma se deja planteado toda la formulacion matematicapara una culminacion exitosa de esta.

Page 41: C omputo y Simulaci on del Cabello Humano

Capıtulo 5

Resultados y Conclusiones

5.1. Problemas y exitos a la hora de implementar la solucion

Mientras nos encontrabamos implementando la solucion al problema que planteamos para elaborar elproyecto de tesis nos encontramos con problemas variados, el primer obstaculo con el que nos encontramosfue lograr entender el modelo que estamos siguiendo, pues el lexico que se maneja en los diferentesdocumentos estudiados, analizados y que se tomaron como referencia son un poco complicados y confusosen algunas ecuaciones, logrando que la curva de aprendizaje y entendimiento fuera un poco mas lenta, yaque nos tocaba referirnos a muchas bibliografıas en donde se encontraban las raıces de las ecuaciones quese estaban planteando en el momento y que no tenıan una clara evolucion en el documento, a medida queiba transcurriendo el tiempo logramos entender poco a poco cada unas de las ecuaciones que necesitamospara implementar la virtualizacion del cabello humano, ası se logro poco a poco dar un resultado esperadopor nosotros al trabajo de tesis de grado y lograr implementar con exito las ecuaciones para poder modelarel cabello humano.

5.2. Lo que no se alcanzo hacer y propuestas para el futuro

Como dijimos anteriormente fue complicado en muchas ocasiones entender algunas de las ecuacionesque se nos eran planteadas dificultandonos un poco la implementacion; uno de los problemas que tuvimosfue con el gradiente holonomico quien es el encargado de la rotacion del marco material logrando ası queno se pudiera discretizar la ecuacion 3.29 la cual no logramos entender de donde surgıa y por mas quebuscamos en bibliografıas no encontramos esta ecuacion y mucho menos como lograr entenderla parapoder implementarla.

Como propuesta para el futuro p12roponemos un estudio mas riguroso de como poder implementardiferentes tipos de cabellos, ası poder simular cabellos lisos, rizados, crespos, utilizando ecuaciones queya tenemos y modificando algunas variables, vectores, direcciones, para lograr el objetivo.

41

Page 42: C omputo y Simulaci on del Cabello Humano

42 CAPITULO 5. RESULTADOS Y CONCLUSIONES

Page 43: C omputo y Simulaci on del Cabello Humano

Bibliografıa

[1] Courant R. Hilbert D. Methods of Mathematical Physics. Interscience, London, 1953.

[2] Pai D. Interactive simulation of thin solids using cosserat models. Eurographics 02, 2002.

[3] Bergou M. Wardetzky M. Robinson S. Audoly B. Grinspun E. Discrete elastic rods. ACM Trans.Graph 27, 2008.

[4] Demetri Terzopoulos Jhon Platt Alan Barr Kurt Fleischert. Elastically deformable models. ComputerGraphics, 21(4), 1987.

[5] Hairer E. Lubich C. Wanner G. Geometric numerical integration: Structure-preserving algorithmsfor ordinary differential equations. Series in Comp., 2006.

[6] Bercovier M. Grinspun E. Goildenthal R. Harmon D. Fattal R. Efficient simulation of extensiblecloth. ACM Trans., 2007.

[7] Choe B. Choi M. G. Ko H. Simulating complex hair with robust collision handling. ACM Press,2005.

[8] Bertails F. Audoly B. Cani M. Querleux B. Leroy F. Leveque J. Superhelices for predicting thedynamics of natural hair. ACM Siggraph 2006 Papers, 2006.

[9] Swift J. Some simple theoretical considerations. J. Cosmet Sci, 1995.

[10] Spillmann J. Teschner M. Cosserat rod elements for the dynamic simulation of onedimensional elasticobjects. Eurograpchis Association 07, 2007.

[11] Ward K. Galoppo N. Lin M. Modeling hair influenced by water and styling products. Computeranimation and social agents (CASA), 2004.

[12] Ward K. Lin M. Adaptive grouping and subdivision for simulating hair dynamics. IEEE ComputerSociety, 2003.

[13] P. Kmoch U. Bonanni N. Magnenat-Thalmann. Hair simulation model for real-time environments.ACM Trans. 2009, 2009.

[14] Volino P. Manenat-Thalmann. Animating complex hairstyles in real-time. ACM Press, 2004.

[15] Joe F. Thompson Z. U. A. Warsi C. Wayne Mastin. Numerical Grid Generation. North Holland,1985.

[16] Hadap S. Magnenat-Thalmann N. Modeling dynamic hair as continuum. Computer Graphics Forum20, 2001.

[17] Barrett O’Neill. Elementos de Geometrıa Diferencial. Limusa Wiley, 1972.

43

Page 44: C omputo y Simulaci on del Cabello Humano

44 BIBLIOGRAFIA

[18] Bonnani U Kmoch P. Virtual hair handle: A model for haptic hairstyling. Eurographics 2008 ShortPapers, 2008.

[19] Selle A. Lentine M. Fedkiw R. A mass spring model for hair simulation. ACM Trans. Graph. 27,2008.

[20] Hadap S. Oriented strands: dynamics of stiff multi-body system. Eurographcis Association, 2006.

[21] Bando Y. Chen B. Nishita T. Animating hair with loosely connected partivles. Eurographics 2003Proc., 2003.

[22] Richard Szeliski David Tonnesen. Surface modeling with oriented particle systems. CambridgeResearch Lab, 1991.

[23] Eitan Grinspun Max Wardetzky. Discrete differential geometry. SIGGRAPH ASIA 2008 COURSENOTES, 2008.

[24] Keonwook Kang Chris Weinberger and Wei Cai. A Short Essay on Variational Calculus. Departmentof Mechanical Engineering Stanford University, 2006.

[25] David Baraff Andrew Witkin. Large steps in cloth simulation. COMPUTER GRAPHICS Proceed-ings, Annual Conference Series, 1988.