Primeiramente fixamos a orientação de dada pelo vetor que aponta para fora de . Fixamos um ponto em , definimos esse ponto como vértice da triangulação. Fixamos uma direção no plano tangente a em e traçamos uma aresta partindo desse ponto com medida , isso é possível pela solução do Problema 1. Obtemos assim, um ponto que também será um vértice da triangulação. Encontramos um ponto tal que ,, sejam vértices de um triângulo equilátero e a poligonal fechada orientada tenha a orientação induzida pela orientação de dada pelo vetor que aponta para fora de com origem em um ponto qualquer no interior do triangulo . Essa poligonal divide em duas regiões: uma triangulada e outra não. Ressaltamos que a orientação da poligonal é invertida se tormarmos como origem do vetor que aponta para fora de um ponto fora da área triangula de . Fazemos então iterações sucessivas na área triangulada acrescentando um novo triângulo a esta a cada iteração, de forma que a nova área triangulada de seja conexa e não degenerada, ou seja, pelo menos uma das arestas do triângulo acrescentado deve ser uma aresta do bordo da área triangulada de obtida na iteração anterior e esse triângulo esteja contido na área não triangulada de . Se todos os triângulos adicionados tiverem áreas aproximadamente iguais então, visto que tem área finita, após um número finito de iterações obteremos a triangulação desejada.
Visto que o bordo da área triangulada de cada iteração contém pelo menos uma aresta do próximo triângulo a ser adicionado, podemos estabelecer um controle da triangulação fazendo com que todas as arestas desse bordo tenha o mesmo comprimento, sempre que possível.
Seja uma poligonal fechada simples, orientada no sentido anti-horário. Essa poligonal limita duas regiões conexas do plano: uma região interior e uma região exterior a . Seja uma função de classe injetiva e que omite apenas um ponto. A poligonal , obtida ligando-se a imagem dos 's por segmentos de reta na mesma ordem em que os 's são ligados em , divide em duas regiões conexas que identificaremos como interior e exterior a conforme seja imagem da região interior ou exterior a em (o ponto omitido pertencerá à região exterior a ). Essa definição permite-nos falar em ângulo externo e interno nos vértices de e , Veja a Figura 2.
Denotamos por o ponto imagem
. Suponha que o ângulo externo em seja e que o ângulo externo em seja .
Problema 2:
Dados
compatível com a geometria de ,
com
, encontrar
um ponto na região exterior a tal que se
então
e o ângulo medido na região exterior a
, medido na orientação de entre os vetores
e
seja .
Problema 3:
Seja
. Dado
, encontrar
um ponto na região exterior a tal que
ou
(preferenciamente ambos) e os ângulos medido na região exterior a
na orientação de entre os vetores
e
e entre os vetores
e
sejam iguais.
De posse da solução destes dois problemas podemos obter a triangulação desejada. De fato, após o cálculo dos três primeiros vértices, a cada nova iteração, é possível que um dos casos abaixo aconteçam, então resolvemos eles na mesma ordem de prioridade quem aparecem abaixo:
Caso 1: Um dos ângulos externos a é menor que . Veja a Figura 3.
Suponha que isso ocorra em um vértice genérico . Nesse caso inserimos na triangulação o triângulo
, então o ponto deixará de fazer parte do bordo da área triangulada, assim como as aresta que eram adjacentes a ele,
ou seja,
deixa de ser
e passa a ser
.
Caso 2: Existe uma aresta de
de comprimento , (por exemplo: arestas geradas no Caso 1). Veja a Figura 4.
Seja
essa aresta. Nesse caso usamos a solução do Problema 2 e encontramos
exterior a tal que
e
, nesse caso obteremos
. Se existe algum vértice de
não-adjacente a cuja distância a é menor que passamos ao Caso 4, caso contrário, inserimos na triangulação o triângulo
e
deixa de ser
e passa a ser
. Se após essa iteração o novo ângulo externo em for menor que , desfazemos a iteração e passamos ao Caso 3 abaixo.
Caso 3: Seja um vértice de
a partir do qual é possível inserir uma aresta de lado mas essa aresta divide o ângulo externo de em dois ângulos cuja soma é menor que . Veja a Figura 5.
Nesse caso usamos a solução do Problema 3. Encontramos
exterior a tal que
divida o ângulo externo de em dois ângulos iguais e
. Se
então teremos, também,
. Se a aresta inserida dividir o ângulo externo de em dois ângulos menores que , então inserimos na triangulação o triângulo
e
deixa de ser
e passa a ser
. Se existe algum vértice de
não-adjacente a cuja distância a é menor que passamos ao Caso 4, caso contrário inserimos na triangulação os triângulos
e
e
deixa de ser
e passa a ser
.
Caso 4: Existe um vértice em
, a partir do qual não é possível inserir uma nova aresta de comprimento (isso acontece, por exemplo, nos últimos passos da triangulação). Veja a Figura 6.
Se o ângulo em ou em ou em for menor que , tomamos aquele que tem o menor ângulo, que, sem perda de generalidade podemos supor que este seja , então inserimos na triangulação o triângulo
e
deixa de ser
e passa a ser
(note que se o ângulo escolhido fosse ou a operação acima também afetaria o ângulo externo em ). Se não tivermos a propriedade acima usamos a solução do Problema 1 e inserimos a partir de uma aresta cujo comprimento seja a metade da menor distância entre e os outros vértices não-adjacentes a ele usando a mesma regra que foi usada no Caso 2 em relação ao ângulo e finalizamos, também, como no Caso 2. Se o ângulo externo em for como no Caso 3, inserimos uma aresta com o comprimento descrito acima de forma que divida esse ângulo em dois ângulos iguais e finalizamos como no Caso 3.
Caso 5: Se nenhum dos casos acima ocorrem.
Escolhemos um vértice de
. Calculamos
exterior à de forma que o triângulo
seja equilátero. Incluimos esse triângulo na triangulação e então
deixa de ser
e passa a ser
.
Solução do Problema 2:
Seja o ângulo externo a . Pela solução do Problema 1, para todo encontramos exterior a tal que o ângulo entre e seja e tal que . Temos, portanto, bem definidas, as funções e , onde é o ângulo externo a em , dadas por e , onde denota o ângulo entre dois vetores, medido na orientação de S (Nota: e tem a mesma classe de diferenciabilidade de ).
Para resolvermos este problema o ideal seria procedermos como na solução do Problema 1, aplicando o Método de Newton à função , mas aparesce de forma implicita, tornando esta opção um pouco complicada devido à necessidade dos valores da derivada de . Em vez disto, optamos por um método alternativo, similar ao Método de Newton, usando o fato de que é estritamente crescente e tem domínio e imagem limitados.
Primeiro escolhemos um valor inicial para , então executamos o algoritmo descrito abaixo:
;
;
;
;
while( )
{
;
;
;
;
;
;
;
;
} return ;
Aqui, a função ``clamp ''é definida por:
;
O ponto desejado é, então, o ponto obtido na solução do Problema 1.
Solução do Problema 3:
O algoritmo que usamos para resolver este problema é similar ao que usamos na solução do Problema 2, a diferença é que, neste caso, o comprimento da aresta a ser inserida e o ângulo que esta aresta deve formar com a aresta
são alterados a cada ``loop''do algoritmo. Esse algoritmo é descrito abaixo:
;
;
;
;
;
while( )
{
;
;
;
;
;
;
;
;
;
;
;
} return ;
Aqui, é o comprimento da aresta a ser inserida, é o ângulo que ela deve formar com a aresta e denota o comprimento da aresta . A função `` ''retorna o maior entre os números e . A restrição a é para evitar que tenhamos arestas muito grandes.
O ponto desejado é, então, o ponto obtido na solução do Problema 1.