Transcript 2 - Rodrigo Toledo
Geometria Computacional
Vetores e operações Polígonos
Vetores
• Os vetores podem estar definidos no
n
, com
n
componentes (usualmente trabalharemos com vetores no 2 e 3 ).
– v 1 3 , cujas coordenadas são x 1 , y 1 e z 1 • Se originam no zero • Podem ser definidos pelo seu tamanho e sua direção • Podem ser criados a partir da subtração das coordenadas de dois pontos
Operações com Vetores
• SomaVetorial ( v 1, v 2 ) = v 1+ v 2 • MultiplicaçãoPorEscalar ( , v ) = v • Norma, módulo ou tamanho!
– Em 2 , Norma ( v ) = || v || = (pitágoras) – Em 3 , Norma ( v ) = || v || = • ProdutoEscalar ( v 1• v 2 ) = x 1 x 2
x
2
y
2 + y 1 y 2
z
2 • ProdutoVetorial ( v 1 x v 2 ) – –
2
3
, ( v 1 x v 2 ) = x 1 y 2 – y 1 x 2
3
, ( v 1 x v 2 ) = { y 1 z 2 – z 1 y 2 , z 1 x 1 – x 1 z 2 , x 1 y 2 – y 1 x 2 }
Produto Escalar de Vetores
• Dados dois vetores, v 1 [x1,y1] o produto escalar v 1• v 2 é: e v 2 [x2,y2] definidos no 2 , v 1• v 2 = x 1 x 2 + y 1 y 2 • Podemos afirmar também a seguinte identidade: v 1• v 2 = | v 1| | v 2| cos , onde é o ângulo formado pelos vetores.
• Se o resultado for positivo, o ângulo é agúdo, senão é obtuso.
• Portanto o ângulo entre dois vetores pode ser calculado por:
ângulo (
v
1,
v
2) = arc cos (
v
1•
v
2 / |
v
1| |
v
2|)
• O ângulo retornado é um valor entre [0, ].
• Se forem vetores unitários não é necessária a divisão pelo módulo • Em inglês se chama
Dot Product
Produto Vetorial
•
2
• O produto vetorial de dois vetores em 2 resulta em um escalar “a esquerda” de v1 • Há controvérsias quanto a chamar esta operação em 2 de produto vetorial, pois o resultado não é um vetor.
•
3
3
• O produto vetorial de dois vetores em 3 vetor em 3 resulta em um outro
•
Produto Vetorial
2
• (
v 1 x 90º do v
v
2
) = {
x 1 y 2 – y 1 x 2
}
• observe que pode ser interpretado como rotação anti-horária de 1 e então a aplicação do produto escalar
•
v 1 x v 2 > 0, se e só se v 2 está “a esquerda” de v 1 • pode ser usado para determinar se dois segmentos de retas se cruzam a c b d • (ab x ac) e (ab x ad) devem ter sinais opostos, nesse caso garante que a reta ab cruza o segmento cd • (cd x ca) e (cd x cb) devem ter sinais opostos, nesse caso garante que a reta cd cruza o segmento ab • ||
v
1x
v
2|| / 2 é a área do triângulo formado por v1 e v2 (esta fórmula pode ser estendido para polígonos planos quaisquer)
Produto Vetorial
•
3
3
•
(
v 1 x v 2
) = {
y 1 z 2 – z 1 y 2 , z 1 x 1 – x 1 z 2 , x 1 y 2 – y 1 x 2
}
• resultado: vetor simultaneamente ortogonal a v 1 obedecendo a regra da mão direita.
• pode ser usado para saber a normal de um plano e v 2 ,
Regras da Geometria
• Somatório dos ângulos de um polígono de
n
lados é sempre igual a (
n
– 2) * 180º • Vértices – Arestas + Faces = 2 x x = número de bordas (ou seja, 1 + buracos) • Três pontos definem um plano no espaço
Fecho Convexo
• “Encontrar menor figura geométrica que contenha um determinado conjunto de pontos.” (idéia do elástico) • Sugestão de algoritmo?
• Algoritmo de Graham • Utilidades?
O(
n
log
n
)
Subdivisão Planar
• Como representar?
– lista de vértices e arestas, ou – lista de vértices e faces, – Winged edge ou Half edge ou ...
• As 9 perguntas devem ser respondidas em tempo ótimo!
• Triangulação – Por que triangular?
• 3 pontos definem um plano • Coordenadas baricêntricas para interpolação • Sempre é possível criar uma triangulação a partir de qualquer polígono ou a partir de um conjunto de pontos • Triângulo é sempre convexo • Triângulo é sempre rígido (Torre Eifel) – Delaunay (maximiza o menor ângulo de todos os triângulos) • “gordura dos triângulos”
Outros Temas em Geometria Computacional
• Interseção de segmento de linhas • Localização de Ponto – Em um polígono – Em uma subdivisão planar • Diagramas de Voronoi – Mapa de localização de ponto mais próximo – Totalmente amarrado ao Delaunay • Fecho Convexo 3D • BSP (Binary Space Partition) – Algoritmo do Pintor • Planejamento de Movimentação de Robôs • Grafos de Visibilidade • Árvores Espaciais – Kd-Trees – Quadtrees