Dissertação
Dissertacao_Tiago_Novello.pdf
Documento PDF (15.2MB)
Documento PDF (15.2MB)
UNIVERSIDADE FEDERAL DE ALAGOAS
INSTITUTO DE MATEMÁTICA
MESTRADO EM MATEMÁTICA
TIAGO NOVELLO DE BRITO
CÁLCULO DE LINHAS DE CURVATURA SOBRE MALHAS DE
TRIÂNGULOS SEM PARAMETRIZAÇÃO USANDO GEODÉSICAS
DISCRETAS
Maceió
2014
TIAGO NOVELLO DE BRITO
CÁLCULO DE LINHAS DE CURVATURA SOBRE MALHAS DE
TRIÂNGULOS SEM PARAMETRIZAÇÃO USANDO GEODÉSICAS
DISCRETAS
Dissertação de Mestrado apresentada ao Programa de Mestrado em Matemática da Universidade Federal de Alagoas, como requisito
parcial à obtenção do tı́tulo de mestre em
Matemática.
Orientador: Prof. Dr. Thales Vieira
Co-Orientador: Prof. Dr. Dimas Martı́nez
Maceió
2014
Catalogação na fonte
Universidade Federal de Alagoas
Biblioteca Central
Divisão de Tratamento Técnico
Bibliotecária Responsável: Maria Auxiliadora G. da Cunha
B862C
Brito, Tiago Novello de.
Cálculo de linhas de3 curvatura sobre malhas de triângulos sem
parametrização usando geodésicas discretas / Tiago Novello de Brito. – 2014.
53 f. : il.
Orientador: Thales Vieira.
Co-orientadora:Dimas Martínez.
Dissertação (Mestrado em Matemática) – Universidade Federal de Alagoas.
Instituto de Matemática. Maceió, 2014.
Bibliografia: f. 50-51.
Apêndice: f. 52-53.
1. Tensor de curvatura . 2. Linhas de curvaturas. 3. Geodésicas retas. 4.
Transporte paralelo. I. Título.
CDU: 514.12/.774.8
AGRADECIMENTOS
Primeiramente a Deus, pela força concedida.
A minha famı́lia, em particular meus pais Clarinda e Jose carlos, meu irmão Rafael, pelo
constante apoio e carinho.
Ao meu orientador, Prof. Dr. Thales Vieira pelo seu apoio, comprometimento e pelas
várias reuniões que foram de suma importância para o desenvolvimento deste trabalho.
Ao Prof. Dr. Dimas Martı́nez por suas sugestões e ajuda na compreensão de alguns tópicos
ao longo do trabalho.
Aqueles que fizeram e fazem parte do Laboratório de Computação Gráfica, por sua amizade,
pelos momentos de descontração e aprendizado.
A todos os companheiros de Mestrado, pois através da amizade, companheirismo e compartilhamento de conhecimento, momentos importantes e difı́ceis ao longo do curso tornaram-se
menos difı́ceis e foram concluı́dos. Em especial, obrigado Douglas, Diego Barboza, Joas, Abraão,
Nayane e Diego Chicuta.
Aos docentes do Instituto de Matemática que tanto contribuı́ram na minha formação
acadêmica. Em especial aos professores Thales Vieira, Dimas Martı́nez, Adelailson Peixoto,
Marcio Batista, krerley Oliveira, e Walter Huaraca, pelas disciplinas ministradas que cursei ao
longo do curso.
Agradeço à CAPES pelo apoio financeiro durante o curso.
Lista de Figuras
1.1
Desenho do Cone.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2
Centro cultural Heydar Aliyev Center em Baku, capital do Azerbaijão,projetado por Zaha
10
Hadid. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
1.3
Pinturas de Vincent van Gogh.
1.4
Ilustração do trabalho de Hildebrandt et al. [6]. Lado esquerdo, malha com as linhas carac-
. . . . . . . . . . . . . . . . . . . . . .
13
1.5
Passos do remalhamento poligonal anisotrópico proposto por Alliez et al. [1] . . . . . . . .
13
1.6
As linhas sobre a malha de triângulos buda representam as linhas de curvatura calculadas
terı́sticas, do direito as linhase e as silhuetas.
pelo método apresentado no artigo [11]. . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.7
Aplicação de Gauss
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.8
C e Cn têm mesma curvatura normal em p. Π é a seção normal em p ao longo de v. . . . .
16
2.9
Construção do tensor. A região em cinza é a vizinhança V de v.
. . . . . . . . . . . . .
18
2.10 Base de uma triângulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
2.11 Campo de direções de mı́nima curvatura sobre a malha de triângulo Mulher . . . . . . . .
20
2.12 Do lado esquerdo temos um wedge, do direito um trissector . . . . . . . . . . . . . . . .
23
3.13 Distribuição de sementes. Os pontos si são sementes.
26
. . . . . . . . . . . . . . . . . .
3.14 Do lado esquerdo a representação do Método de Euler, e do lado direito o Método Runge-Kutta
de quarta ordem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
3.15 Ângulos entre as arestas incidentes em um vértice p ∈ M . . . . . . . . . . . . . . . . .
29
3.16 Ângulos θl e θr são as somas dos βi e αi , respectivamente. . . . . . . . . . . . . . . . .
29
4.17 Aproximação inicial Γ0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
4.18 Passos para correção de um vértice p ∈ M . A aplicação φ é uma isometria . . . . . . . . .
37
5.19 Suavização do tensor de curvatura 3D. Figura (1): sem suavização, na Figura (2): 1 suavização,
na Figura (3): 3 suavizações, e na Figura (4): 20 suavizações. . . . . . . . . . . . . . . .
42
5.20 Suavização do tensor de curvatura 3D. Figura (1): 0 suavização, na Figura (2): 1 suavização,
na Figura (3): 3 suavizações.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
43
6
5.21 Linhas de curvatura sobre o elipsoide. Do lado esquerdo as linhas de curvatura mı́nima, e do
direito de curvatura máxima
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
5.22 Linhas de curvatura sobre o toro. Do lado esquerdo as linhas de curvatura mı́nima, e do
direito de curvatura máxima
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
5.23 Linhas de curvatura sobre o coelho. Do lado esquerdo as linhas de curvatura mı́nima, e do
direito de curvatura máxima
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
5.24 Linhas de curvatura sobre a mulher. Do lado de baixo as linhas de curvatura mı́nima, e de
cima de curvatura máxima
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
5.25 Linhas de curvatura sobre a vaca. Do lado esquerdo as linhas de curvatura mı́nima, e do
direito de curvatura máxima
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
5.26 Linhas de curvatura sobre o armadillo. Do lado esquerdo as linhas de curvatura mı́nima, e do
direito de curvatura máxima
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
5.27 Linhas de curvatura sobre a vaca. Na figura (a) usamos σ igual a 0, 5 vezes o comprimento m
da aresta mediana, na (b) σ = 1, 8 · m, e em (c) σ = 3, 6 · m
. . . . . . . . . . . . . . .
47
RESUMO
As linhas de curvatura são objetos de grande importância em diversas áreas do conhecimento,
como na Arquitetura, nas Engenharias, nas Artes, e na própria Computação Visual, para
realizar análise de geometria ou remalhamento, por exemplo. Este trabalho descreve um
método para calcular linhas de curvatura sobre malhas de triângulos sem usar parametrização.
Baseando-se no trabalho de Alliez et al. [1], o qual usa parametrizações aproximadamente
conformes para calcular linhas de curvatura, foram aplicados conceitos envolvendo geodésicas
e transporte paralelo de vetores para calcular e suavizar tensores de curvatura, e integrar
linhas de curvatura na própria geometria da superfı́cie. Foram realizadas experiências para
demonstrar que o método é capaz de calcular linhas de curvatura em superfı́cies de gênero
arbitrário, além de evitar problemas causados por distorções de parametrizações.
Palavras-chave: tensor de curvatura. linhas de Curvatura. geodésicas retas. transporte
paralelo.
ABSTRACT
Lines of curvature are objects of great importance in several areas of knowledge, such as
architecture, engineering, arts, and Visual Computing itself, where they are useful to perform
geometry analysis and remeshing, for example. This work describes a method to compute
lines of curvature on triangle meshes without requiring a parameterization. Based on the
work of Alliez et al. [1], which uses approximately conform parameterizations to compute lines
of curvature, concepts involving geodesics and parallel transport of vectors were applied to
calculate and smooth curvature tensors, and integrating lines of curvature in the geometry of
the surface. Experiments were performed to demonstrate that the method is able to compute
lines of curvature on surfaces of arbitrary genus, and avoid problems caused by distortions of
parameterizations.
Keywords: tensor of curvature. lines of curvature. straigh geodesics. parallel transport.
9
SUMÁRIO
1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.1 Trabalhos relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2 CAMPOS TENSORIAIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1 Aplicação de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 Tensor em malhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3 Interpolação de campos tensoriais em malhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.4 Pontos umbı́licos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4.1 Cálculo de pontos umbı́licos sobre triângulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4.2 Caracterização de ponto umbı́licos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3 INTEGRAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.1 Sistema de equações diferenciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1.1 Distribuição de sementes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 Runge-Kutta 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3 Transporte paralelo e geodésicas sobre malhas de triângulos . . . . . . . . . . . . . . . . . 28
3.4 Runge-Kutta sobre malhas de triângulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.5 Extração de autovetores durante a integração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.6 Critério de paradas e densidade das linhas de curvatura . . . . . . . . . . . . . . . . . . . . . . 32
4 SUAVIZAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.1 Geodésicas iteraticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2 Suavizando T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5 RESULTADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.1 Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.2 Suavização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.3 Integração das linhas de curvatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.4 Detalhes de implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
APÊNDICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
10
INTRODUÇÃO
Em geometria diferencial as linhas de curvaturas são curvas regulares traçadas sobre uma
superfı́cie regular, cujas direções tangentes são paralelas as direções na qual a superfı́cie se
curva mais ou se curva menos. Podemos pensar em linhas de curvatura ao desenhar um cone:
uma das maneiras mais fácil de representar a forma da sua geometria seria traçar os cı́rculos e
as retas que este contém, os quais são suas linhas de curvatura, veja por exemplo a Figura .
As linhas de curvatura são objetos de grande importância em várias áreas, veja na Figura
um exemplo de sua aplicação na arquitetura. Note que as linhas do monumento se aproximam
de linhas de curvatura, dando um destaque maior na geometria de sua superfı́cie. Na Figura ,
temos dois exemplos de pinturas de Vincent van Gogh, onde ele usa linhas para descrever a
geometria de alguns detalhes, por exemplo os chapéus, e estas linhas assemelham-se à linhas
Figura 1.1: Desenho do Cone.
Fonte: Disponı́vel em
<http://4.bp.blogspot.com/-eDv0ye5bUZM/UUlqdKtysTI/AAAAAAAABtk/a1kLFmI5Neo/>. Acesso em 17
fev. 2014
11
de curvatura.
Transportar este conceito à uma malha de triângulos não é uma tarefa fácil, muito menos
exato e único como no caso de superfı́cies regulares, pois é necessário trabalhar com aproximações.
As malhas de triângulos podem apresentar ruı́dos, auxiliando na dificuldade de estimar tais
linhas.
Apresentamos na próxima seção alguns trabalhos relacionados, mostrando como aproximar
linhas de curvatura em malhas de triângulos, e algumas aplicações deste conceito. E finalizamos
com a inspiração do nosso trabalho.
Figura 1.2: Centro cultural Heydar Aliyev Center em Baku, capital do Azerbaijão,projetado
por Zaha Hadid.
Fonte: Disponı́vel em <http://www.colegiodearquitetos.com.br/centro-de-heydar-aliyev/>. Acesso em 17 fev.
2014
12
1.2
TRABALHOS RELACIONADOS
Apresentamos agora duas aplicações de linhas de curvatura sobre malhas de triângulos. A
primeira é o trabalho de Hildebrandt et al. [6] intitulado “Smooth Feature Lines on Surface
Meshes”, que apresenta um esquema para discretização de um tipo de curva sobre superfı́cies
regulares que carrega em poucos traços, caracterı́sticas mais destacadas da geometria da
superfı́cie, onde apenas com estas linhas possivelmente conseguimos identificar a sua geometria.
Estas curvas são chamadas de linhas caracterı́sticas, veja ilustração na Figura 1.2. Estas
linhas são também linhas de curvatura, pois matematicamente as definimos como linhas cujas
tangentes são direções principais, mas que apenas contém pontos que são extremos locais das
funções curvatura mı́nima e máxima.
A segunda aplicação de linhas de curvatura é o remalhamento poligonal de malhas de
triângulos. O trabalho de Alliez et al. [1] “Anisotropic Polygonal Remeshing”, usa das
linhas de curvatura de uma dada malha de triângulos para então calcular uma nova malha
composta por quadriláteros em regiões onde não existem pontos umbı́licos, e por triângulos
onde existem pontos umbı́licos. O artigo inicia com o cálculo do tensor de curvatura em cada
vértice, conforme feito por Cohen-Steiner e Morvan [3], e após é calculada uma parametrização
aproximadamente conforme da superfı́cie. A partir desta é estimado o tensor de curvatura
2D sobre a parametrização, e posteriormente todos os cálculos são feitos na parametrização e
levados para a superfı́cie. Na Figura 1.2 ilustramos os passos deste trabalho.
Figura 1.3: Pinturas de Vincent van Gogh.
Fonte: Disponı́vel em <http://en.wikipedia.org/wiki/Vincent van Gogh>. Acesso em 17 fev. 2014
13
Por utilizar uma parametrização aproximadamente conforme, surgem alguns problemas no
método de cálculo de linhas de curvatura de Alliez et al. [1], por exemplo custo computacional
para calcular uma parametrização aproximadamente conforme, além de problemas de distorção
de ângulos e área.
O trabalho de Marinov e Kobbelt [11] “Direct Anisotropic Quad-Dominant Remeshing”apresenta
uma extensão da técnica de remalhamento poligonal anisotrópico de Alliez et al. [1], a novidade
é que não fazem uso de parametrizações. No entanto, o cálculo das linhas de curvaturas
descrito é de certo modo simples. Para passar a linha de curvatura de um triângulo para outro,
Figura 1.4: Ilustração do trabalho de Hildebrandt et al. [6]. Lado esquerdo, malha com as
linhas caracterı́sticas, do direito as linhase e as silhuetas.
Fonte: Disponı́vel no trabalho de Hildebrandt et al. [6]. Acesso em 17 fev. 2014
Figura 1.5: Passos do remalhamento poligonal anisotrópico proposto por Alliez et al. [1]
Fonte: Disponı́vel no trabalho de Alliez et al. [1]. Acesso em 17 fev. 2014
14
parametrizam estes, de forma que esta aplicações seja aproximadamente uma isometria. Veja
um exemplo do método na Figura 1.2.
Decidimos a partir dos problemas mostrados acima, calcular linhas de curvaturas sem usar
uma parametrização conforme, usando apenas de uma aproximação da geometria intrı́nseca da
malha. Utilizamos geodésicas e transporte paralelo sobre a malha de triângulos para resolver
este problema. De inı́cio estimamos o tensor de curvatura em cada vértice da malha de
triângulos, como feito por Cohen-Steiner e Morvan [3]. Após, definimos para cada triângulo
um tensor de curvatura 2D. Utilizando transporte paralelo de vetores e geodésicas adotamos o
método Runge-Kutta geodésico sobre a malha para campo de autovetores, sem usar de uma
parametrização. Para amostrar várias linhas de curvaturas, utilizamos um campo de distância
dado pelo método Fast Marching de Kimmel e Sethian [8]. Apresentamos também uma forma
de suavizar o tensor de curvatura, utilizando apenas geodésicas e transporte paralelo.
Figura 1.6: As linhas sobre a malha de triângulos buda representam as linhas de curvatura
calculadas pelo método apresentado no artigo [11].
Fonte: Disponı́vel no trabalho de [11]. Acesso em 17 fev. 2014
15
2 CAMPOS TENSORIAIS
Neste capitulo, vamos descrever o tensor de curvatura em superfı́cies regulares e uma
adaptação para malhas de triângulos. Estes tensores possibilitarão, posteriormente, a extração
de campos de direções principais, usados para integrar as linhas de curvatura.
2.1
APLICAÇÃO DE GAUSS
Dada uma superfı́cie regular orientada S, temos que em cada ponto p ∈ S podemos tomar
uma parametrização x : U ⊂ R2 → S, onde para cada ponto q ∈ x(U )
N (q) =
xu ∧ xv
(q)
|xu ∧ xv |
representa um vetor normal unitário bem definido. Assim, sendo N : x(U ) → S 2 uma aplicação
diferenciável, podemos estender a S, obtendo assim a aplicação de Gauss N : S → S 2 . Veja
ilustrações destes conceitos na Figura 2.1.
A diferencial dNp de N no ponto p ∈ S é uma aplicação linear dNp : Tp S → Tp S, e
−dNp é chamada de tensor de curvatura. Um fato importante é que dNp é auto-adjunta,
com isso podemos associar a dNp uma forma quadrática Q em Tp S, fornecida por Q(v) =
hdNp (v), vi, v ∈ Tp S.
Seja C uma curva regular em S passando por p ∈ S, k a curvatura de C em p, n o vetor
normal a C e N o vetor normal a S em p. O valor kn = k cos θ é chamado de curvatura normal
de C ⊂ S em p, onde θ é o ângulo entre n e N .
É fácil verificar que todas as curvas em uma superfı́cie S que possuem, no ponto p ∈ S a
mesma reta tangente, têm a mesma curvatura normal neste ponto. Inclusive a curva Cn que é
interseção entre S e a seção normal, gerada pelo vetor normal N em p e o vetor tangente v a
C, veja Figura 2.1
Como a aplicação linear dNp é auto-adjunta, temos que existe uma base ortonormal {e1 , e2 }
de Tp S tal que dNp (e1 ) = −k1 e1 , dNp (e2 ) = −k2 e2 , sendo k1 e k2 (k1 ≥ k2 ) sendo o máximo e
16
o mı́nimo da forma quadrática −Q restrito aos vetores do cı́rculo unitário de Tp S. Veja que
k1 e k2 são os valores extremos da função kn , e as definimos como curvaturas principais, e os
vetores associados a elas, e1 e e2 , são as direções principais.
Finalmente, considere p ∈ S e dNp : Tp S → Tp S a diferencial da aplicação de Gauss. O
Figura 2.7: Aplicação de Gauss
Fonte: Autor, 2014
Figura 2.8: C e Cn têm mesma curvatura normal em p. Π é a seção normal em p ao longo de
v.
Fonte: Autor, 2014
17
determinante e a metade do traço de dNp são chamados curvatura Gaussiana K e curvatura
média H respectivamente de S em p. Escrevendo dNp na base dos auto-vetores temos
K = k1 k2
e
1
H = (k1 + k2 ).
2
Para maiores detalhes, consultar o livro “Geometria Diferencial de Curvas e Superfı́cies”de
do Carmo [5].
2.2
TENSOR EM MALHAS
Uma malha de triângulos é uma superfı́cie linear por partes necessariamente não diferenciável,
portanto as definições de tensor de curvatura descritas na seção anterior não se aplicam. Em
nosso trabalho vamos utilizar a definição dada por Cohen-Steiner e Morvan [3] para calcular o
tensor em cada vértice da malha. Em seguida, obtemos um campo tensorial contı́nuo sobre
toda a superfı́cie, estimando primeiramente o tensor de curvatura em cada vértice da malha, e
posteriormente interpolando o tensor nos pontos interiores dos triângulos.
Dado um ponto p sobre uma aresta e da malha, temos o mı́nimo e o máximo (em valores
absolutos) da função kn (p) na direção e, e na direção tangente à malha e perpendicular a e
respectivamente, pois a curvatura é claramente zero na direção da aresta. Podemos então
definir o tensor de curvatura ao longo de cada aresta, como feito em [3]. Dado qualquer vértice
v da malha, e uma vizinhança V de v, podemos estimar o tensor somando várias contribuições
das aresta contidas em V , de acordo com a seguinte expressão:
T (v) =
X
1
β(e) |e ∩ V | e et ,
area(V ) arestas e
onde β(e) é o ângulo com sinal entre as normais dos triângulos adjacentes e orientados a e,
|e ∩ V | é o comprimento do segmento de reta e ∩ V , e por ultimo e é um vetor unitário na
direção de e. Veja na Figura 2.2 a ideia geométrica. Note que β(e) está diretamente relacionado
com a curvatura na direção perpendicular à aresta, e apresenta sinal positivo caso convexo
e negativo se côncavo. Usamos em nossa implementação a primeira vizinhança estrelada
de v no lugar de V , por questões de performance, e por termos obtido resultados com boa
precisão. O tensor T avaliado no vértice v fornece um auto-vetor aproximadamente na direção
do vetor normal a malha em v, o qual está associado ao auto-valor de menor valor absoluto. Os
18
Figura 2.9: Construção do tensor. A região em cinza é a vizinhança V de v.
Fonte: Autor, 2014
outros auto-vetores restantes são as direções principais, onde a direção de curvatura máxima
está associada com o menor dos auto-valores restantes, e a direção de curvatura mı́nima esta
associada com o maior dos auto-valores restantes.
2.3
INTERPOLAÇÃO DE CAMPOS TENSORIAIS EM MALHAS
Uma vez que temos um tensor de curvatura 3D definido em cada vértice da malha de
triângulos, podemos, através de rotações e interpolações lineares, obter um campo tensorial 2D
linear para cada triângulo tr da malha da seguinte forma:
1. Tomamos uma orientação para M , de modo que dado um triângulo tr qualquer temos
um vetor n que é normal a tr e respeita a orientação da malha.
2. Fixamos uma base ortonormal u1 , u2 para o plano que contém o triângulo. Sejam v1 e v2
dois vértices de tr escolhidos pela orientação do triângulo. Então os vetores
u1 =
v2 − v1
,
|v2 − v1 |
(2.1)
u2 = n ∧ v1
formam uma base ortonormal do plano que contém tr, na mesma orientação do triângulo,
veja Figura 2.
3. Sejam T1 , T2 e T3 os tensores de curvatura 3D nos vértices v1 , v2 e v3 de tr. Usando a
orientação da malha temos um triedro ortonormal em cada vértice vi de tr, formado
19
Figura 2.10: Base de uma triângulo
Fonte: Autor, 2014
pelos vetores ni (normal à malha em vi ), e1i (direção de curvatura máxima) e e2i (direção
de curvatura mı́nima), com i = 1, 2, 3. Rotacionamos o tensor da seguinte forma, para
i = 1, 2 e 3: considere o eixo de rotação dado pelo vetor ni ∧ n. Rotacione com ângulo
θ = arccos(hni , ni) o triedro definido no vértice vi , de modo que a normal unitária no
vértice ni seja igual à normal unitária do triângulo n. Teremos que os vetores e1i e e2i
poderão ser escritos como combinações lineares da base {u1 , u2 } .
4. Podemos calcular um tensor 2D sobre cada vértice vi de tr, como
k
0
1i
Pi ,
Ti = Pti
0 k2i
onde
Pi =
e1i e2i
.
As colunas de Pi representam as direções principais em vi escritas na base {u1 , u2 } de tr,
e k1i e k2i são as curvaturas principais. Desse modo, os tensores T1 , T2 e T3 estão agora
representados na mesma base, tornando o processo de interpolação linear trivial.
5. Dado qualquer ponto p ∈ tr podemos estimar um tensor T (p) usando interpolação
baricêntrica em cada componente Tij de T , da seguinte forma: escrevemos p = λ1 p1 +
λ2 p2 + λ3 p3 , com λ1 + λ2 + λ3 = 1, onde p1 , p2 e p3 são os vértices do triângulo tr. Desse
modo, o tensor em p fica então escrito da seguinte forma:
T (p) = λ1 T (p1) + λ2 T (p2) + λ3 T (p3).
Para cada triângulo tr da malha temos agora um campo tensorial 2D linear que passamos
a chamar de tensor de curvatura 2D:
20
Ttr (p) =
T11 (p) T12 (p)
T12 (p) T22 (p)
,
p ∈ tr,
onde Ttr (p) esta expressa na base {u1 , u2 } de tr.
Em cada ponto p ∈ M podemos agora calcular as direções principais, exceto em pontos que
os auto-valores do tensor de curvatura são iguais, os quais são chamados pontos umbı́licos; e nos
vértices e arestas da malha, onde esta definição é ambı́gua, pois como estes pontos pertencem
a mais de um triângulo, existe mais de um tensor associado. A Figura 2.3 exibe um exemplo,
foi plotado na malha de triângulos Mulher, apenas o campo de direção de curvatura mı́nima.
No Capı́tulo 3 vamos tratar esse problema para integrar linhas de curvatura usando conceitos
Figura 2.11: Campo de direções de mı́nima curvatura sobre a malha de triângulo Mulher
Fonte: Autor, 2014
de geodésicas retas. O problema dos pontos umbı́licos será tratado na próxima seção.
2.4
PONTOS UMBÍLICOS
Um ponto p ∈ tr é dito umbı́lico se o tensor de curvatura 2D nele avaliado possui auto-valores
iguais, ou seja, as curvaturas principais são iguais, então podemos escrever:
k 0
,
Ttr (p) =
0 k
21
em qualquer base de Tp M . Assim, para qualquer direção representada pelo vetor v ∈ Tp M
(escrito nesta base), teremos Ttr (p)v = kv, o que implica que qualquer direção é principal, e
portanto as direções principais de máxima e mı́nima curvatura não estão bem definidas em p.
Nas próximas subseções descrevemos o cálculo dos pontos umbı́licos sobre a malha de
triângulos M . Vamos descrever também a caracterização do comportamento de campo de
tensores lineares, numa vizinhança de um ponto umbı́lico sobre um triângulo, de acordo com
Delmarcelle e Hesselink [4], e Tricoche [14].
2.4.1
CÁLCULO DE PONTOS UMBÍLICOS SOBRE TRIÂNGULOS
Devido ao cálculo do tensor de curvatura 2D sobre cada triângulo ser resultado de uma
interpolação linear, conforme feito na seção 2.3, obteremos, em cada triângulo, um campo
tensorial linear. Consequentemente, cada triângulo pode ter no máximo um ponto umbı́lico, a
menos que mais de um de seus vértices sejam pontos umbı́licos.
Seja um triângulo tr ⊂ M e um ponto p ∈ tr, é fácil ver que se p for umbı́lico, ele satisfaz a
seguinte propriedade:
T
= 0
T
= 0
tr11 (p) − Ttr22 (p)
tr12 (p)
,
sob qualquer sistema de coordenada, sendo Ttr o tensor de curvatura 2D definido da seção 2.3.
Chamando Ttr11 (p) − Ttr22 (p) de α(p), e Ttr12 (p) de β(p), e usando o sistema de coordenadas
baricêntricas (λ1 , λ2 , λ3 ) de tr, onde tr é definido pelos vértices p1 , p2 , p3 ∈ M , temos que um
ponto umbı́lico (λ1 , λ2 , λ3 ) ∈ tr, satisfaz
λ α(p ) + λ α(p ) + λ α(p ) = 0
1
1
2
2
3
3
,
λ β(p ) + λ β(p ) + λ β(p ) = 0
1
1
2
2
3
3
(2.2)
onde λ1 + λ2 + λ3 = 1. Usando que λ3 = 1 − λ1 − λ2 , e desenvolvendo o sistema 2.2, temos:
α(p1 ) − α(p3 ) α(p2 ) − α(p3 )
λ1
β3
= −
.
(2.3)
β(p1 ) − β(p3 ) β(p2 ) − β(p3 )
λ2
α3
Caso o determinante da matriz 2 × 2 no sistema 2.3 seja diferente de zero, e 0 ≤ λi ≤ 1, para
i = 1, 2, 3, temos um ponto umbı́lico em tr .
2.4.2
CARACTERIZAÇÃO DE PONTOS UMBÍLICOS
Para estudar o que acontece com o campo na vizinhança de pontos umbı́licos p, vamos
considerar as derivadas parciais:
22
a =
c =
1 ∂(T11 −T22 )
2
∂x
∂(T12 )
∂x
b =
d =
1 ∂(T11 −T22 )
2
∂y
∂(T12 )
∂y
avaliadas em p ∈ S, e (x, y) são as coordenadas na base {u1 , u2 } do triangulo tr ⊂ M , tal que
p ∈ tr. Considerando uma vizinhança de p e usando a série de Taylor de primeira ordem, temos
T11 −T22 ≈ a∆x + b∆y
2
T
≈ c∆x + d∆y
12
onde (∆x , ∆y ) é uma pequena variação de p.
Dada uma curva simples e fechada contida no triângulo tr contendo um único ponto umbı́lico
p, encontramos dois tipos de setores angulares:
1. Setores hiperbólicos, quando as trajetórias das curvas soluções não passam por p;
2. Setores parabólicos, quando as trajetórias chegam em p.
Chamamos de separatrizes as curvas integrais que separam um setor de outro. Sejam θk os
ângulos entre as separatrizes e o eixo dado pelo vetor u1 (ver Eq. 2.1). De acordo com Tricoche
[14], os valores Xk = tan(θk ) são raı́zes da equação
dX 3 + (c + 2b)X 2 + (2a − d)X − c = 0
(2.4)
portanto, podem existir no máximo três separatrizes, que caracterizam o tipo do ponto umbı́lico.
Um valor importante para caracterização de pontos umbı́licos é
δ = ad − bc,
que possui a propriedade de ser invariante por rotação do sistema de coordenadas. Quando
δ < 0 temos um trissector, neste caso o polinômio acima possui três raı́zes, que determinam as
separatrizes dos três setores hiperbólicos. Caso δ > 0 temos um wedge, que pode ser classificado
em dois tipos: um com duas separatrizes, delimitando o setor hiperbólico de dois parabólicos
consecutivos. Neste caso, o polinômio fornece três raı́zes reais, onde uma das raı́zes representa
a separatriz entre os setores parabólicos, e as outras duas representam as separatrizes que
delimitam o setor hiperbólico; e um com uma única separatriz, onde os setores parabólicos se
resumem a uma linha. Neste último caso, o polinômio apresenta uma única raiz real. Veja na
Figura 2.4.2 um exemplo de trissector e outro de wedge.
23
Figura 2.12: Do lado esquerdo temos um wedge, do direito um trissector
Fonte: Autor, 2014
Para maiores detalhes consultar os trabalhos de Delmarcelle e Hesselink [4], e Tricoche [14].
24
3 INTEGRAÇÃO
No capitulo anterior estimamos um tensor de curvatura 2D sobre cada triângulo de M .
Neste capı́tulo, vamos usar estes tensores para integrar linhas de curvatura sobre M .
Em [1], é necessário que M seja uma malha com bordo e homeomorfa a um disco, pois
após definir o tensor de curvatura, conforme feito na seção 2.2, calcula-se inicialmente uma
parametrização de M aproximadamente conforme, usando o método de Lévy et al. [10]. Através
desta parametrização, estimam-se tensores de curvatura 2D nos vértices da parametrização de
M usando-se projeções dos tensores de curvatura 3D. Daı́ é possı́vel interpolar linearmente estes
tensores no interior dos triângulos. Finalmente, direções principais são extraı́das destes tensores,
para ser possı́vel integrar os campos de direções principais pelo método de Runge-Kutta sobre
o domı́nio da parametrização.
O método descrito no parágrafo anterior, por utilizar uma parametrização aproximadamente
conforme, apresenta problemas de distorção. Por outro lado, M deve ser homeomorfa a um
disco com bordo. Finalmente, calcular uma parametrização aproximadamente conforme pode
ter custo computacional caro.
Nas próximas seções, será introduzida uma alternativa desse método para cálculo de linhas
de curvatura sobre M sem usar parametrização. A seção 3.1 define as linhas de curvatura
como solução de sistemas de equações diferenciais ordinárias e trata do problema da condição
inicial, ou seja, a determinação dos pontos usados para começar a integrar as curvas. Para a
integração da linha de curvatura, descreveremos o método Runge-Kutta geodésico na seção
3.4. Para utilizar do método Runge-Kutta, vamos descrever na seção 3.5 uma estratégia de
extração de direções principais a partir do campo tensorial definido sobre M . Finalmente, os
critérios de paradas para o método de integração, e como traçar várias linhas de curvatura
sobre M , serão fornecidos na seção 3.6.
25
3.1
SISTEMA DE EQUAÇÕES DIFERENCIAIS
Uma curva conexa C sobre M é chamada de linha de curvatura se para todo ponto p ∈ C
a direção tangente a C é uma direção principal em p.
Para integrar uma linha de curvatura C sobre qualquer triângulo tr ⊂ M considere a base
{u1 , u2 } do plano que contém tr, conforme Equação 2.1. Agora podemos calcular a linha de
curvatura C : t → x(t)u1 + y(t)u2 sobre o triângulo tr, apenas integrando a seguinte equação
diferencial ordinária:
x0 (t)
0
y (t)
= ei (t)
(3.5)
onde ei (t) com i = 1, 2, é um autovetor do tensor T (x(t)u1 + y(t)u2 ). Para estender o cálculo
de C para M , será necessário tratar a integração sobre vértices e aresta de M , apresentamos
estes casos nas próximas seções.
Para integrar linhas de curvatura usando o sistema de equações diferenciais acima, é
necessário determinar pontos iniciais, que passaremos a chamar de sementes. Além disso, para
capturarmos a topologia do campo tensorial, é importante ter um bom critério de distribuição
de sementes, o qual discutiremos em seguida.
3.1.1
DISTRIBUIÇÃO DE SEMENTES
O processo de integração das linhas de curvatura (suponha a de curvatura mı́nima e2 ),
sobre M , é iniciado colocando todos os pontos umbı́licos em uma fila de prioridades, chamada
de S1 . Começamos a traçar as linhas de curvatura a partir dos elementos de S1 com maior
curvatura gaussiana absoluta, como proposto por Verma et al. [15]. Caso M não apresente
pontos umbı́licos, adicionamos a S1 apenas o vértice de maior curvatura gaussiana absoluta.
Seja pi o ponto obtido no passo i da integração da linha de curvatura C. Plantamos duas
sementes q1 e q2 na direção ortogonal ni a C em pi , em sentidos opostos. Para tal, considere
δ a única geodésica reta que passa por pi e tem como tangente neste ponto a direção ni ,
parametrizando δ de forma que δ(0) = pi , então definimos q1 = δ(σ) e q2 = δ(−σ), onde σ é o
parâmetro comprimento de arco, e será calculado baseado na densidade das linhas de curvatura,
veja os detalhes na próxima seção. Por fim, adicionamos p1 e p2 em uma nova fila, chamada S2 .
Uma vez que a lista S1 termina, é então iniciada a integração das linhas de curvatura, no
caso de curvatura mı́nima, que passam pelas sementes da lista de S2 , iniciando pelas sementes
que apresentarem maior curvatura gaussiana. Veja a ilustração do processo na Figura 3.1.1.
26
A próxima seção descreve o método Runge-Kutta geodésico para a integração das linha de
curvatura.
Figura 3.13: Distribuição de sementes. Os pontos si são sementes.
Fonte: Autor, 2014
3.2
RUNGE-KUTTA 2D
Considere um campo contı́nuo de vetores v : U → R2 , onde U ⊂ R2 é um conjunto aberto,
ou seja, cada ponto (x, y) ∈ U está associado a um vetor v(x, y) = (a(x, y), b(x, y)) ∈ R2 , onde
as funções reais a e b são contı́nuas. Considere p0 ∈ U , um ponto inicial, h > 0 o tamanho do
passo. Uma iteração do método de Euler é
pi+1 := pi + hv(pi ),
produzindo uma curva poligonal {p0 , p1 , p2 , ...}, onde essa curva é aproximadamente a solução
do problema de valor inicial dado pelo campo v e o ponto p0 ∈ U . Note que h define o tamanho
dos segmentos da curva integral, desde que v seja unitário. Observe, que este método fez uso
apenas de uma única amostra do campo v para iterar um passo de integração, fornecendo
assim uma aproximação mais grosseira da curva solução.
Descrevemos agora um método que faz uso de várias amostras do campo v para um único
passo de integração, fornecendo assim uma melhor aproximação da curva solução. Uma iteração
27
do método Runge-Kutta de quarta ordem é dado por
pi+1 := pi + hvi ,
onde vi é definido iterativamente como
vi1 := v(pi )
vi2 := v(pi + h2 vi1 )
vi3 := v(pi + h2 vi2 )
vi4 := v(pi + hvi3 )
e
1
vi := (vi1 + 2vi2 + 2vi3 + vi4 ).
6
Veja Figura 3.2 a ilustração dos métodos de Euler e Runge-Kutta de quarta ordem. Para
maiores detalhes, consultar o livro “Análise numérica”de Burden e Faires [2].
Note que o método acima recolhe, para um único passo de integração, várias amostras do
campo de vetores, transporta estes vetores para a posição atual, gera uma nova direção por
meio de uma média ponderada destes vetores, e com essa nova direção calcula o próximo ponto.
Esse método só é valido em domı́nios planos. Para aplica-lo diretamente sobre M sem usar
parametrização será necessário usar conceitos de transporte paralelo de vetores e geodésicas
sobre malhas de triângulos.
Figura 3.14: Do lado esquerdo a representação do Método de Euler, e do lado direito o Método
Runge-Kutta de quarta ordem.
Fonte: Autor, 2014
28
3.3
TRANSPORTE PARALELO E GEODÉSICAS SOBRE MALHAS DE
TRIÂNGULOS
Introduziremos agora o conceito de geodésicas discretas, a qual são curvas que generalizam
a ideia de curva reta sobre uma malha de triângulos. Neste capitulo estas curvas serão usadas
para substituir os segmentos de retas do método Runge-Kutta 2D, fornecendo assim ferramentas
para adaptar o método Runge-kutta sobre uma malha. Apresentaremos também, o conceito de
transporte paralelo, que leva para malha de triângulos a noção de transportar paralelamente
um vetor no espaço euclidiano. O apêndice 5.1 descreve conceitos básicos de geodésicas e
transporte paralelo de vetores sobre superfı́cies regulares.
Existem algumas generalizações diferentes de geodésicas sobre malha de triângulos, que
chamamos de geodésicas discretas. Nesta seção descrevemos uma delas, a qual é chamada de
geodésica reta, definida por Polthier e Schmies [13], inspirada do fato de uma geodésica ter
curvatura geodésica nula.
Para definir curvatura geodésica discreta de uma curva poligonal C ⊂ M em um ponto
p ∈ C, precisamos de algumas preliminares.
Definição 3.1. O ângulo total θ de um vértice p da malha é a soma dos ângulos αi entre
as arestas incidentes neste, veja Figura 3.1. Denotando por A = {a0 , a1 , a2 , ..., an } as arestas
ordenadas incidentes em p, temos
θ=
n−1
X
ângulo(an , an+1 ).
n=0
O ângulo total de um ponto no interior de um triângulo ou no interior de uma aresta é θ = 2π.
Definição 3.2. Considere C uma curva poligonal (tomando uma orientação), seja θ o ângulo
total em p ∈ C. A curva C divide θ em dois ângulos: θr e θl , referentes as somas das arestas e
segmentos de C incidentes em p nos lados direito e esquerdo da curva, respectivamente, veja
na Figura 3.3 os casos em que p é um vértice ou esta sobre uma aresta. A curvatura geodésica
discreta da curva C no ponto p é dada pelo valor:
kg (p) =
2π θ
( − θr ).
θ 2
Veja que, ao mudarmos a orientação de C o sinal de kg é alterado. Uma geodésica reta é
agora definida como uma curva poligonal com curvatura geodésica discreta nula em todo ponto.
Pela definição de kg , temos que uma geodésica reta satisfaz θr = θl em todo ponto. Dentro de
um triângulo as geodésicas são segmentos de retas que ligam dois pontos quaisquer das arestas.
29
Figura 3.15: Ângulos entre as arestas incidentes em um vértice p ∈ M .
Fonte: Autor, 2014
Figura 3.16: Ângulos θl e θr são as somas dos βi e αi , respectivamente.
Fonte: Autor, 2014
Polthier e Schmies [13] mostraram que dado um ponto p ∈ M e v ∈ Tp M , então existe uma
única geodésica reta γ, com γ(0) = p e γ 0 (0) = v. Ver algoritmo 3.1.
No caso do transporte paralelo de vetores, sua definição sobre M é similar ao apresentado
no apêndice 5.1 sobre superfı́cies diferenciáveis.
30
entrada: Malha de triângulos M , um ponto pi ∈ M , um vetor unitário vi tangente à M
em pi , e h > 0
saı́da
: Geodésica reta G = {pi , pi+1 , pi+2 , ..., pn } com comprimento h, saindo do
ponto pi ∈ M , com vi = (pi+1 − pi )/|pi+1 − pi |
1
Seja j = 1;
2
Encontre o triângulo tri ⊂ M , onde pi ∈ tri ;
3
Calcule o ponto pi+j de intersecção entre as arestas de tri e a semi-reta dada por
pi + t · vi , com t ∈ (R+ − 0);
4
enquanto a geodésica não tiver comprimento h, ou não atingir o bordo de M ou seu
inı́cio faça
Encontre o vetor vi+j , e o triângulo tri+j ⊂ M , onde pi+j ∈ tri+j , de maneira que:
5
1. A semi-reta dada por pi+j + t · vi+j , com t ∈ (R+ − 0), intersecte as arestas de
tri+j ⊂ M , seja pi+j+1 este ponto;
2. A curvatura geodésica kg da curva {pi+j−1 , pi+j , pi+j+1 } no ponto pi+j seja zero
(θl = θr ).
j = j+1;
6
Retorne a geodésica reta G = {pi , pi+1 , pi+2 , ..., pn };
Algoritmo 3.1: Cálculo de uma geodésica reta
3.4
RUNGE-KUTTA SOBRE MALHAS DE TRIÂNGULOS
Nesta seção vamos integrar um campo de vetores v definido sobre uma malha de triângulos
M sem usar parametrizacao, utilizando da adaptação dos métodos de integração de Euler e de
Runge-Kutta feita por Polthier e Schmies [13] .
Para um ponto p ∈ M e um valor h (tamanho do passo), considere δ(p, t, v(p)) a única
geodésica reta que passa pelo ponto p com vetor tangente v(p). Um simples passo do método
de Euler geodésico é dado por:
pi+1 := δ(h, pi , v(pi )).
Isto gera uma sequência de pontos {p0 , p1 , p2 , ..., pn } sobre M , os quais estão conectados por
pedaços de geodésicas retas com comprimento h.
Usando o transporte paralelo de vetores sobre a malha de triângulos, vamos definir o método
de Runge-Kutta de quarta ordem geodésico, que chamaremos de Runge-Kutta geodésico. Seja
31
p ∈ M e o valor h > 0 (tamanho do passo). Denotemos por δ(t, p, v(p)) a única geodésica reta
que passa pelo ponto p, tem com vetor tangente v(p) neste ponto, e avaliada no parâmetro t,
tal que p = δ(0, p, v(p)). Seja π|δ o transporte paralelo de vetores ao longo de uma geodésica
reta δ a δ(0). As amostras do método Runge-Kutta geodésico são extraı́das como::
vi1 := v(pi )
vi2 := π|δ ◦ v(δ1 ( h2 , pi , vi1 ))
vi3 := π|δ ◦ v(δ2 ( h2 , pi , vi2 ))
(3.6)
vi4 := π|δ ◦ v(δ3 (h, pi , vi3 ))
e finalmente a direção de integração final é a média ponderada:
1
vi := (vi1 + 2vi2 + 2vi3 + vi4 ).
6
Uma simples interação do Método Runge-Kutta de quarta ordem Geodésico é dado por:
pi+1 := δ(h, pi , vi ).
É importante ressaltar que, em nosso problema, temos um campo de autovetores, o qual
não tem sentido definido. Portanto, é necessário, em cada passo da integração, determinar o
sentido de integração do autovetor.
Suponha agora que v seja um campo de autovetores, ou seja v fornece dois campos de
vetores v − e v + , com orientações opostas e direções iguais. Para determinar o sentido de
integração de uma curva integral Ck , representada pela curva poligonal {p0 , p1 , ..., pi } até a
iteração i, no ponto pi usamos o seguinte teste: calcula-se um vetor unitário ui tangente à
curva pk em pi , e assim o sentido de v(pi ) usado, suponha que v(pi )− , tem que satisfazer
hv(pi )− , ui i > 0. O cálculo de ui pode ser feito por meio da única geodésica reta γ, a qual
satisfaz a condição inicial dada pelo ponto pi e o vetor tangente w = (pi−1 − pi )/|pi−1 − pi |,
onde pi−1 é o ponto anterior à pi sobre a curva Ck . Veja que, γ é uma curva poligonal da forma
{... , p0i−2 , p0i−1 , pi , p0i+1 , p0i+2 , ...}, assim definimos ui = (p0i−1 − pi )/|p0i−1 − pi |.
Passamos agora para a extração de autovetores do tensor de curvatura T sobre M , e
posteriormente utilizamos isto para o cálculo de linhas de curvatura.
3.5
EXTRAÇÃO DE AUTOVETORES DURANTE A INTEGRAÇÃO
Considere um ponto p ∈ M . A função v definida na seção anterior retorna um autovetor
tangente usado para integração das linhas de curvatura de uma determinada direção principal,
32
usamos nesta seção a de curvatura mı́nima. Estes autovetores serão extraı́dos usando os
tensores 2D descritos no Capı́tulo 2, de acordo com cada caso abaixo:
1. Se p ∈ tr for uma semente de integração, onde tr é um triângulo de M , temos dois casos:
(a) Caso p seja ponto umbı́lico, integraremos todas as suas separatrizes, obtendo suas
direções (com sentido) v(p) através das raı́zes da Equação 2.4.
(b) Caso contrário, considerando que p esteja no interior de tr, extraı́mos a direção v(p)
como o autovetor do tensor de curvatura 2D Ttr correspondente à direção desejada
(de máxima ou mı́nima). Neste caso, é necessário integrar em ambos os sentidos. Se
p estiver exatamente sobre uma aresta ou vértice de M , perturbamos este para o
interior de algum triângulo adjacente para resolver o problema de ambiguidade do
campo conforme comentado no Capı́tulo anterior.
2. Se p não for uma semente, então estamos em um passo intermediário de integração. Daı́
temos novamente dois casos:
(a) Caso p esteja no interior do triângulo tr, basta extrair a direção que está sendo
integrada, por meio do tensor de curvatura 2D Ttr , e definir um sentido para continuar
a integração da linha de curvatura, usando o teste de sentido como descrito na seção
anterior.
(b) Caso p esteja exatamente em uma aresta ou em um vértice de M , precisamos
encontrar o próximo triângulo no qual a linha de curvatura que está sendo integrada
irá passar. Para tal, utilizamos o cálculo do vetor u feito na seção anterior durante
o teste de sentido, e atualizamos p para p + · u, com > 0 muito pequeno.
3.6
CRITÉRIOS DE PARADA E DENSIDADE DAS LINHAS DE CURVATURA
Nesta seção descrevemos como várias linhas de curvatura podem ser traçadas sobre M , e
quando parar o processo de integração de determinada linha de curvatura.
A ideia aqui é calcular a menor distância sobre a malha M entre um vértice desta e as
linhas de curvaturas. Construiremos assim, um campo de distâncias D, que será utilizado para
critério de parada durante a integração de uma linha de curvatura. O primeiro passo é para
cada linha de curvatura Ci calcular um campo de distâncias Di , onde dado um vértice p ∈ M
33
teremos aproximadamente a menor distância Di (p) de p à Ci sobre M . Para tal, usamos do
“Fast Marching Method”(que passamos chamar de FMM) desenvolvido por Kimmel e Sethian
[8], que é baseado na solução da equação Eikonal
|∇D| = 1.
Logo, dado um vértice p ∈ M , temos aproximadamente a menor distância de p às linha de
curvatura Ci , dada por:
D(p) = M in{D1 (p), D2 (p), ..., Dn (p)}
(3.7)
onde n é o número de linhas de curvatura que foram traçadas. Agora, se p não for um vértice,
podemos aproximar a distância D(p) interpolando distâncias entre as curvas e os vértices v1 , v2
e v3 do triângulo tr que contem p. Dai teremos:
Di (p) ≈ λ1 Di (v1 ) + λ2 Di (v2 ) + λ3 Di (v3 ),
onde λ1 , λ2 e λ3 são as coordenadas baricêntricas do ponto p em relação ao triângulo tr, e
então usando a Equação 3.7, temos D(p).
Finalmente, é necessário definir critérios de parada para encerrar a integração de uma linha
de curvatura. Cada vez que um novo ponto p é adicionado à curva C, testamos se p está a
uma distância menor que σ 0 de:
1. Um ponto umbı́lico;
2. Da própria curva C, neste caso será uma curva fechada, ou;
3. De outra linha de curvatura.
Para o Item 3 acima, utilizamos do campo de distâncias D definido no paragrafo anterior.
Note que σ 0 define a distância mı́nima entre duas linhas de curvatura. O algoritmo 3.2
descreve como traçar várias linhas de curvatura, de modo que a menor distância entre duas
delas seja maior ou igual a σ 0 , o qual recebe o nome de densidade das linhas de curvatura.
Observando que na seção anterior utilizamos um parâmetro σ, para plantar sementes na
vizinhança de um linha de curvatura, então temos que σ deve ser maior que σ 0 . Em nosso
trabalho a densidade será constante sobre toda a malha de triângulos.
34
Para detalhes sobre densidades de linhas integrais, consultar Jobard e Lefer [7].
entrada: Malha de triângulos M e a valor de densidade σ 0 > 0
saı́da
1
2
3
4
: Linhas de curvaturas Ci , tal que distancia(Ci , Cj ) > σ 0 quando i 6= j
se M tiver pontos Umbilicos então
Coloque todos pontos umbı́licos na lista S1 ;
senão
Coloque apenas o vértice de maior curvatura gaussiana da malha em S1 ;
5
para k = 1 até k = 2 faça
6
enquanto Sk 6= ∅ faça
7
pegue o ponto p em sementes k com maior curvatura gaussiana e integre Ci ;
8
retire p de Sk ;
9
10
Algoritmo 3.2: Descrevendo linhas de curvatura sobre M
35
4 SUAVIZAÇÃO
O tensor de curvatura descrito na seção 2.2, por ter natureza linear sobre cada triângulo,
tende a capturar uma quantidade excessiva de pontos umbı́licos, provenientes de ruı́do e imperfeições locais na geometria. No entanto, se desejarmos um campo de direções topologicamente
mais simples, ou seja, com poucos pontos umbı́licos, mas ainda mantendo a geometria das
linhas de curvatura fieis à geometria global da superfı́cie, é conveniente suavizar o campo após
o cálculo dos tensores nos vértices da malha. Em [1], este passo adicional é realizado no tensor
de curvatura 2D definido sobre uma parametrização aproximadamente conforme da malha
M . Neste capitulo apresentamos uma forma de suavizar o campo tensorial 3D T definido na
seção 2.2, sem utilizar uma parametrização. Nossa abordagem se baseia no uso de transporte
paralelo de vetores sobre M , e de geodésicas entre dois vértices próximos de M .
Para suavizar o tensor T (p), basicamente calcularemos uma média ponderada de tensores
em uma vizinhança de p. Aqui surgem três problemas:
1. Encontrar os vértices em uma vizinhança de p. Para isto, usamos o Método Fast Marching
[8] (FMM), como no capı́tulo anterior.
2. Cada tensor 3D está representado em uma base própria, daı́ a necessidade do uso de
transporte paralelo de vetores via geodésicas.
3. O peso de um tensor T (q) na vizinhança de p depende da distância entre p e q sobre M .
Usaremos o trabalho de Morera [12] para calcular geodésicas de forma iterativa e resolver estes
dois últimos problemas, como descrito na próxima seção.
4.1
GEODÉSICAS ITERATIVAS
Apresentamos nesta seção a descrição do cálculo de uma geodésica curta Γ que liga dois
vértices v1 e v2 de M , conforme feita por Morera [12]. Esse trabalho é baseado no trabalho
36
de Polthier e Schmies [13], e no Método Fast Marching (que passamos a chamar de FMM)
desenvolvido por Kimmel e Sethian [8]. Esse método permite uma boa aproximação da
geodésica discreta entre dois pontos, por meio de um processo iterativo.
O algoritmo que calcula a geodésica curta Γ entre os dois vértices v1 , v2 ∈ M , é composto
por duas etapas. A primeira, calcula uma curva poligonal Γ0 sobre as arestas de M , ligando os
vértices v1 e v2 . Na segunda etapa é feito um processo iterativo aproximando Γ0 de Γ.
Para encontrar a curva poligonal inicial Γ0 , usamos do algoritmo 4.3.
entrada: Malha de triângulos M , e dois vértices v1 e v2 desta
saı́da
1
: A aproximação inicial Γ0 formada por arestas de M , ligando v1 a v2
Use FMM para calcular a distância geodésica D(v) do vértice v1 a seus vizinhos,
recursivamente, até encontrar o vértice v2 ;
2
Coloque v1 em Γ0
3
p0 = v1 , i = 0
4
enquanto pi 6= v2 faça
5
pi+1 = vizinhança de pi com menor distância D de v1
6
Coloque pi+1 em Γ0
7
i=i+1
8
Algoritmo 4.3: Aproximação inicial Γ0
Uma vez que temos a aproximação inicial Γ0 para Γ, veja Figura 4.1, precisamos corrigir os
Figura 4.17: Aproximação inicial Γ0
Fonte: Autor, 2014
37
Figura 4.18: Passos para correção de um vértice p ∈ M . A aplicação φ é uma isometria
Fonte: Autor, 2014
vértices do interior desta, de maneira iterativa, obtendo Γi cada vez mais próxima de Γ. A
correção de um vértice p de Γi é baseada na teoria de geodésicas retas de Polthier e Schmies, e
é realizada de forma que θr (p) = θl (p), veja Figura 4.1,conforme descrita na seção 3.3.
Na próxima seção descrevemos o cálculo da suavização do tensor de curvatura 3D T .
4.2
SUAVIZANDO T
Dado um vértice p e um raio r > 0, temos a vizinhança V (p) = {q ∈ M/ D(q) ≤ r}, com
D(q) sendo a distância geodésica de p à q, dado pelo método FMM. Podemos agora estimar o
tensor de curvatura T suavizado sobre M , definindo para cada p ∈ M :
P
q∈V (p) peso(q) · A(q)
P
,
T (p) =
q∈V (p) peso(q)
1
, e |Γq | é o comprimento da geodésica que liga os vértices p e q de M . A
|Γq |
matriz A(q) representa o tensor de curvatura 3D calculado em q e transportado de q até p pela
onde peso(q) =
geodésica Γq . Portanto,
k2 (q) 0
A(q) = P (q) 0
0
0
t
k1 (q) 0 P (q) ,
0
0
onde
P (q) =
π|Γq ◦ e1 (q) π|Γq ◦ e2 (q) N (p)
é uma matriz ortogonal, e π|Γq representa o transporte paralelo de vetores do ponto q ao ponto
p, ao longo da geodésica Γq .
38
5 RESULTADOS
Para gerar os resultados implementamos uma aplicação em C++ usando as bibliotecas gsl,
OpenGL 3.0 e a estrutura de dados CHE (Compact Half–Edge) apresentada por Lage [9].
A implementação do trabalho foi testada em vários modelos de malhas de triângulos,
considerando a geometria, presença de ruı́dos, topologia distintas, por exemplo o toro, veja
Figura 5.3.
O ponto mais importante do trabalho foi usar uma aproximação da geometria intrı́nseca da
malha de triângulos M , e com isso não foi necessário usar parametrizações para calcular linhas
de curvaturas sobre M .
Durante a amostragem das linhas podem surgir várias linhas pequenas indesejáveis, as
vezes por problemas do campo de distâncias, e outras pelo comportamento da geometria da
malha, tais pedaços de linhas vamos chamar de traços.
5.1
PERFORMANCE
Na tabela 5.1 apresentamos para alguns modelos os tempos gastos em cada etapa: cálculo
do tensor de curvatura, cálculo das geodésicas, 3 suavização do tensor de curvatura, e finalmente
o cálculo das linhas de curvatura sobre a malha. Dispomos as malhas em ordem crescente
com relação ao número de vértices. Como era de se esperar, o tempo total também ficou
em ordem crescente. Contudo nas malhas armadillo com 14652 vértices e toro com 33480
vértices, apesar do número de vértices no segundo caso ser mais que o dobro, o tempo foi
apenas aproximadamente 26% maior. Além disso, o tempo de cálculo das linhas de curvatura
foi aproximadamente o mesmo, enquanto que uma diferença de tempo relevante foi observada
no cálculo, a diferença maior foi no cálculo da suavização e das geodésicas, o que nos leva a
concluir que o tempo para calcular as linhas de curvatura pode depender mais da geometria da
malha e depender menos da quantidade de vértices.
Na coluna “# pontos umbı́licos”, podemos observar que com apenas três suavizações
39
já conseguimos reduzir consideravelmente a quantidade de pontos umbı́licos dos modelos
analisados. Veja por exemplo o modelo armadillo que de inı́cio tinha quase cinco mil pontos
umbı́licos, e após três suavizações restaram um pouco mais de trezentos. No modelo toro, pela
malha apresentar ruı́dos na geometria, de inı́cio foram calculados mais de trezentos pontos
umbı́licos, mas após as suavizações não restaram pontos umbı́licos, idêntico ao caso do toro
em superfı́cie regulares. Com o elipsoide também chegamos a mesma quantidade de pontos
umbı́licos apresentada no caso de superfı́cies regulares.
De geometria diferencial sabemos que os meridianos e paralelos do toro são linhas de
curvatura, então ao fazer uma amostragem destas linhas, com uma densidade fixada, restarão
poucos traços. Ainda mais, caso escolhido as linhas de curvaturas que são os paralelos, no caso
suave não ficaria nenhum traço indesejado, a amostragem seria formada apenas por cı́rculos.
Isto seria uma explicação do porque foram calculadas poucas linhas de curvatura no modelo
toro, em relação aos outros modelos, mesmo a malha toro contendo mais vértices.
10000
coelho
armadillo 14652
33480
0,12
10000
vaca
toro
0,03
9502
mulher
0,16
0,06
0,05
0,02
5002
elipsoide
cálc. tensor
Vért.
Tempo (s)
Malha
#
5,72
1,57
0,8
0,92
0,9
0,2
Geodésicas (s)
Tempo cálc.
16,83
3,72
2,04
1,86
1,71
0,66
Suav.
Tempo(s)
360/0
4924/330
965/154
901/134
396/146
162/4
Umbı́licos
# pontos
1997
4711
3105
3379
2508
978
mı́n.
# linhas
32,91
32,35
15,75
17,01
13,07
3,51
tempo(s)
1629
4431
2765
2657
1869
332
máx.
# linhas
31,28
30,98
15,13
15,5
11,01
2,76
tempo(s)
86,9
68,74
33,75
35,35
26,74
7,15
total(s)
tempo
40
Tabela 5.1: Tempos gastos para calcular as linhas de curvaturas com 3 três suavizações. Obs:
antes da barra da coluna “# pontos Umbı́licos”, esta a quantidade de pontos umbı́licos inicial,
após a quantidade depois da suavização.
41
5.2
SUAVIZAÇÃO
Durante a suavização do campo tensorial, o cálculo que mais custa computacionalmente
é o das geodésicas entre dois vértices da malha, isto se a distância sobre a malha entre eles
for grande, pois deste modo as aproximações das geodésicas poderão conter vários vértices, e
consequentemente serão necessárias muitas etapas de correção (ver seção 4.1). Contudo, se a
distância entres os vértices for pequena, o cálculo da geodésica é feito rapidamente.
Um detalhe importante é que precisamos calcular as geodésicas iterativas, entre os vértices
da malha e seus vizinhos, dado um raio, uma única vez. E ao calcular a geodésica entre os
vértices v1 e v2 , temos a geodésica que liga v2 a v1 . Após isto, podemos suavizar várias vezes o
tensor de curvatura 3D, sem a necessidade de recalcular geodésicas.
A suavização do tensor de curvatura pode remover detalhes da topologia dos campos de
direções principais, podendo deixar de fazer sentido com a geometria da malha de triângulos.
Veja na Figura 5.2, que na terceira iteração da suavização do tensor já temos um campo
de direções de curvatura mı́nima com poucos detalhes. No entanto, em algumas malhas de
triângulos a presença de ruı́dos na geometria é clara ao calcular o tensor e extrair um dos
campos de direções, veja por exemplo a Figura 5.2, o exemplo clássico do elipsoide. Sabemos
que este possui 4 pontos umbı́licos no caso suave. Neste caso, foram necessárias 2 suavizações
para o tensor fornecer 4 pontos umbı́licos.
5.3
INTEGRAÇÃO DE LINHAS DE CURVATURA
Esta seção apresenta alguns exemplos de linhas de curvatura sobre malhas de triângulos.
Foram utilizados cinco modelos. Veja a seguir as descrições de cada modelo:
1. O elipsoide, exemplo clássico de geometria, veja Figura 5.3, cuja malha contém 5002
vértices. Neste exemplo suavizamos o tensor de curvatura 20 vezes. Apesar de permanecerem alguns traços não desejados sobre a malha, o resultado foi bom, pois as linhas se
comportam como no caso de superfı́cies regulares. Uma boa observação é que esta malha
é um exemplo de uma malha fechada, onde todos os pontos umbı́licos são wedge;
2. O toro, também clássico da geometria diferencial, mostrado na figura 5.3, com 33480
vértices. Foi necessário suavizar o tensor de curvatura 10 vezes. Já nesta malha tivemos
poucos traços indesejados, porem como as linhas de curvatura mı́nima são paralelas do
toro(nesta malha), não deverı́amos ter traços. No caso das linhas de curvatura máxima,
42
que são os paralelos do toro, é inevitável durante a amostragem não ter traços. A malha
toro é um exemplo de malha de gênero 1 e que não possui pontos umbı́licos, e nosso
método apresentou resultados bem semelhantes com o caso de superfı́cies regulares;
3. O coelho, exemplo clássico de computação gráfica, veja Figura 5.3, possui 10000 vértices,
e o tensor de curvatura foi suavizado 1 vez. Veja que as linhas de curvatura destaca
perfeitamente a geometria da malha, por exemplo a parte de trás da orelha do coelho é uma
região parecida com um pedaço de cilindro, e as linhas se comportam aproximadamente
Figura 5.19: Suavização do tensor de curvatura 3D. Figura (1): sem suavização, na Figura
(2): 1 suavização, na Figura (3): 3 suavizações, e na Figura (4): 20 suavizações.
Fonte: Autor, 2014
43
Figura 5.20: Suavização do tensor de curvatura 3D. Figura (1): 0 suavização, na Figura (2):
1 suavização, na Figura (3): 3 suavizações.
Fonte: Autor, 2014
como no cilindro;
4. A mulher, veja Figura 5.3, com 9502 vértices. Neste caso, o tensor foi suavizado 3 vezes.
Este também é um exemplo onde o método destaca com sucesso as linhas que estão bem
próximas das linhas de máxima e mı́nima curvatura.;
5. A vaca, veja Figura 5.3, com 10000 vértices. Aqui o tensor foi suavizado 3 vezes. Este
é um exemplo de que se suavizarmos muito tensor de curvatura, começamos a perder
detalhes locais da geometria, por exemplo veja que restou pouca informação da geometria
da região próxima ao olho da vaca, para isto basta comparar com o campo de vetores
desta malha na Figura 5.2;
6. O Armadillo, na Figura 5.3, com 14652 vértices. Aqui o tensor não foi suavizado. Este é
um exemplo de que nosso método fornece bons resultados, mesmo sem suavizar o tensor
de curvatura. Veja que as linhas destacam claramente os detalhes da geometria da malha,
e respeitando a orientação da malha, veja para isto o interior da orelha do armadillo.
44
Figura 5.21: Linhas de curvatura sobre o elipsoide. Do lado esquerdo as linhas de curvatura
mı́nima, e do direito de curvatura máxima
Fonte: Autor, 2014
Figura 5.22: Linhas de curvatura sobre o toro. Do lado esquerdo as linhas de curvatura
mı́nima, e do direito de curvatura máxima
Fonte: Autor, 2014
5.4
DETALHES DE IMPLEMENTAÇÃO
Foi usado para criar o tensor de curvatura T em cada vértices apenas a primeira vizinhança
estrelada deste. Pelo trabalho de Cohen-Steiner e Morvan [3] deverı́amos utilizar de um disco
aproximadamente geodésico, mas nossa implementação mostrou bons resultado usando a
primeira vizinhança estrelada, veja por exemplo na Figura 5.2 no item (a).
Para suavizar T em um vértice, utilizamos um raio dado por um oitavo do comprimento da
maior aresta de M . Mas caso esta vizinhança não atinja 8 vértices, aumentamos iterativamente
até atingir. Para cada vértice usamos como peso para transportar seu tensor via geodésica, o
inverso da distância deste ao vértice em que o tensor esta sendo suavizado, veja seção 4.2.
45
Figura 5.23: Linhas de curvatura sobre o coelho. Do lado esquerdo as linhas de curvatura
mı́nima, e do direito de curvatura máxima
Fonte: Autor, 2014
Figura 5.24: Linhas de curvatura sobre a mulher. Do lado de baixo as linhas de curvatura
mı́nima, e de cima de curvatura máxima
Fonte: Autor, 2014
46
Figura 5.25: Linhas de curvatura sobre a vaca. Do lado esquerdo as linhas de curvatura
mı́nima, e do direito de curvatura máxima
Fonte: Autor, 2014
As sementes foram plantadas a uma distância dada pela metade da mediana do comprimento
das arestas. E por ultimo, para a densidade σ usamos três décimos da aresta mediana. Como
devemos plantar as sementes numa distância maior que a densidade dada, definimos sempre
a distâncias das sementes a partir da densidade. Variando a densidade veja os resultados na
Figura 5.4.
Figura 5.26: Linhas de curvatura sobre o armadillo. Do lado esquerdo as linhas de curvatura
mı́nima, e do direito de curvatura máxima
Fonte: Autor, 2014
47
Figura 5.27: Linhas de curvatura sobre a vaca. Na figura (a) usamos σ igual a 0, 5 vezes o
comprimento m da aresta mediana, na (b) σ = 1, 8 · m, e em (c) σ = 3, 6 · m
(a)
(b)
Fonte: Autor, 2014
(c)
48
CONCLUSÃO
Este trabalho apresentou um procedimento para calcular linhas de curvaturas e suavização
de campos tensoriais sobre uma malha de triângulos M sem usar parametrizações. Utilizamos
para isto alguns conceitos intrı́nsecos de superfı́cies regulares: transporte paralelo e geodésicas.
O trabalho foi baseado em três etapas. O primeiro foi o cálculo do tensor de curvatura, que
fornece uma aproximação das curvaturas principais, e uma base ortogonal em cada vértice,
formado pelo vetor normal e as direções principais no vértice. A segunda etapa foi a suavização
do tensor de curvatura, tal etapa pode ser necessária quando a malha utilizada possuir ruı́dos
na geometria, como no caso da Figura 5.2, e também como em nosso trabalho utilizamos
apenas a primeira vizinhança estrelada para criar o tensor de curvatura em um vértice, ao
suavizar o tensor neste, conseguimos uma contribuição melhor da geometria local para este
vértice . A terceira e última etapa, foi realizar a integração das linhas de curvatura sobre a
malha de triângulos, utilizamos para isto o método Runge-Kutta adaptado para malhas.
De modo geral, o cálculo das linhas de curvatura apresentou bons resultados sobre as
malhas utilizadas, inclusive em malhas com gênero maior que zero, por exemplo o toro. A
contribuição dada por nosso trabalho em relação ao Artigo [1], é que ao usar da geometria
intrı́nseca, não precisamos nos preocupar com a topologia da malha, apenas precisamos que
seja uma variedade, e também evitamos distorções de área e de ângulo, pois não usamos
parametrizações.
Segue abaixo uma lista de trabalhos futuros:
1. Verificar se existe aumento na precisão do método em relação ao trabalho [1], devido as
distorções causadas pelo uso de parametrizações discretas.
2. Mapear a malha de triângulos em uma malha base, por exemplo: mapear o coelho que
tem gênero 0 na esfera. Após transportar para a malha base a métrica da malha original.
Então calcular as linhas de curvatura na malha base.
3. Melhorar o campo de distâncias, para conseguir uma melhor densidade de amostragem
49
das linhas, evitando linhas pequenas e regiões com densidade muito variada.
4. Estender a implementação para malhas abertas, para isto basta uma adaptação do
método que calcula uma geodésica discreta entre dois vértices da malha.
Referências
[1] Pierre Alliez, David Cohen-Steiner, Olivier Devillers, Bruno Lévy, e Mathieu Desbrun.
Anisotropic polygonal remeshing. In Transactions on Graphics, volume 22, pages
485–493. ACM, 2003.
[2] Richard Burden e Douglas Faires. Análise numérica. Cengage Learning, 2008.
[3] David Cohen-Steiner e Jean-Marie Morvan. Restricted delaunay triangulations and normal
cycle. In Symposium on Computational Geometry, pages 312–321. ACM, 2003.
[4] Thierry Delmarcelle e Lambertus Hesselink. The topology of symmetric, second-order
tensor fields. In Visualization, pages 140–147. IEEE, 1994.
[5] Manfredo Perdigao do Carmo. Geometria diferencial de curvas e superfı́cies. SBM,
2010.
[6] Klaus Hildebrandt, Konrad Polthier, e Max Wardetzky. Smooth feature lines on surface
meshes. In Symposium on Geometry Processing, pages 85–90, 2005.
[7] Bruno Jobard e Wilfrid Lefer. Creating evenly-spaced streamlines of arbitrary density. In
Visualization in Scientific Computing, pages 45–55. Springer, 1997.
[8] Ron Kimmel e James A Sethian. Computing geodesic paths on manifolds. Proceedings
of the National Academy of Sciences, 95(15):8431–8435, 1998.
[9] Marcos Lage. Estruturas de dados topológicos escalonáveis para variedades de
dimensão 2 e 3. PhD thesis, Departamento de Matemática, PUC-Rio, 2006. Oriented
by Hélio Lopes.
[10] Bruno Lévy, Sylvain Petitjean, Nicolas Ray, e Jérome Maillot. Least squares conformal
maps for automatic texture atlas generation. In ACM Transactions on Graphics,
volume 21, pages 362–371. ACM, 2002.
50
51
[11] Martin Marinov e Leif Kobbelt. Direct anisotropic quad-dominant remeshing. In Pacific
Graphics, pages 207–216. IEEE, 2004.
[12] Dimas Martı́nez Morera. Geodesic-based Modeling on Manifold Triangulations.
IMPA, 2006. Oriented by Paulo Cezar Carvalho and Luiz Velho.
[13] Konrad Polthier e Markus Schmies. Straightest geodesics on polyhedral surfaces.
ACM, 2006.
[14] Xavier Tricoche. Vector and tensor field topology simplification, tracking, and
visualization. PhD thesis, Department of Computer Science, Universitat Kaiserslautern,
2002.
[15] Vivek Verma, David Kao, e Alex Pang. A flow-guided streamline seeding strategy. In
Visualization, pages 163–170. IEEE, 2000.
52
APÊNDICE
5.1
GEODÉSICAS E TRANSPORTE PARALELO DE VETORES SOBRE
SUPERFÍCIES DIFERENCIÁVEIS
Os detalhes do texto abaixo podem ser encontradas em [5].
Considere uma curva parametrizada
α : (−, ) → U,
onde U ⊂ S, tal que α(0) = p ∈ U e α0 (0) = y ∈ Tp S. Considere um campo diferenciável de
vetores v tangentes à superfı́cie sobre U , restringindo v à α, o vetor obtido pela projeção de
(dw/dt)(0) sobre o plano tangente Tp S é chamada de derivada covariante do campo de vetores
v no ponto p em relação ao vetor y, a qual denotamos por (Dw/dt)(0).
A definição de derivada covariante faz parte da geometria intrı́nseca de S, e não depende
da curva α tomada, depende apenas do campo de vetores.
Dizemos que um campo de vetores tangente v restringido a uma curva parametrizada
α : I → S é paralelo se Dw/dt = 0, para todo t ∈ I. Considerando que S seja um plano,
teremos que a noção de campo paralelo ao longo de uma curva torna-se a noção de campo
constante.
Dados dois campos de vetores paralelos w e v sobre S, se restringirmos estes à uma curva
α teremos que hv(t), w(t)i será constante, ou seja o ângulo entre v(t) e w(t) é constante.
Considere uma curva parametrizada α : I → S, seja w0 ∈ Tα(t0 ) S, t0 ∈ I, temos a existência
e unicidade de um campo de vetores paralelo w(t) ao longo da curva α(t), tal que w(t0 ) = w0 .
Seja t1 ∈ I, tal que t1 6= t0 , o vetor w(t1 ) é chamado transporte paralelo de w0 ao longo de α
no ponto t1 .
Considere γ : I → S curva parametrizada regular, dizemos que γ é uma geodésica caso o
53
campo γ 0 (t) for paralelo, ou seja
Dγ 0 (t)
= 0, para todo t ∈ I.
dt
Pelas propriedades acima temos que |γ 0 (t)| = contante 6= 0. Observe que a definição de
geodésica é equivalente à γ 00 (t) = k(t)n(t) ser normal ao Tγ(t) S. Logo γ é geodésica se e somente
se a normal n(t) for paralela à normal a S em γ(t).
Dado uma geodésica γ : I → S e t0 ∈ I, então existe uma vizinhança (t1 , t2 ) ⊂ I de t0 , tal
que γ((t1 , t2 )) é o menor caminho sobre S que liga o ponto γ(t1 ) ao γ(t2 ).
Considere uma curva regular orientada C ⊂ S, em uma vizinhança do ponto p ∈ C seja
uma parametrização α(s) de C pelo comprimento de arco s. O valor
h
dα0 (s)
, N ∧ α0 (s)i = kg
ds
é chamado curvatura geodésica de C no ponto α(s). Uma curva regular que possui curvatura
geodésica nula em todo ponto é uma geodésica.
