Post on 24-Jan-2019
BCC402 Algoritmos e Programação AvançadaProf. Marco Antonio M. CarvalhoProf. Túlio Ângelo M. Toffolo2011/1
Geometria
• A geometria é inerentemente uma disciplinavisual– Desenhar figuras e analisá-las cuidadosamente.
• Certas operações “óbvias” realizadas à mãorequerem programação não trivial para seremrealizadas computacionalmente– Como determinar a interseção entre linhas.
4
Geometria
• Nesta aula vamos desenferrujar um poucosobre geometria– Linhas, pontos, triângulos, círculos, etc.
• Problemas mais elaborados envolvendosegmentos de linha e polígonos serãoestudados na próxima aula.
5
Geometria
• Linhas são a menor distância entre doispontos…– Comprimento infinito em ambas as direções
• Diferentemente de segmentos de linha, que sãofinitos.
– Vamos nos concentrar em linhas no plano• Por falar nelas, procure pelo problema de mesmo
nome no livro Matemática Concreta.
6
Geometria
• Linhas podem ser representadas por pares de pontos ou equações– Pares de pontos (x1, y1) e (x2, y2) que estejam
sobre uma linha podem descrevê-la completamente;
– Também, equações do tipo y=mx+b descrevemuma linha completamente
• m é a inclinação da linha– m= (x1, x2)/ (y1, y2).
• b é o único ponto (0, b) em que a linha intercepta o eixo y
– b=y1-mx1 7
Geometria
• Linhas veriticais não podem ser descritas porequações como as anteriores porque o divisor seria zero;
• A equação x=c denota uma linha vertical quecruza o eixo x no ponto (c, 0);
• Este tipo de degeneração requer atenção extra quando estivermos programando;
• Utilizaremos a fórmula mais geral ax+by+c=0 para atendermos a todas as possibilidades.
8
Geometria
• Multiplicar qualquer um destes coeficientes por umaconstante não nula resulta em uma representaçãoalternativa para qualquer linha;
• É estabelecida uma representação canônica pelainsistência que o coeficiente y é 1 caso sejadiferente de zero– Caso contrário, o coeficiente x é 1;– Apenas uma simplificação que mantém a linha
próxima da origem.
10
Geometria
• Duas linhas possuem um ponto de interseção, a não ser que sejam paralelas– Linhas paralelas possuem a mesma inclinação,
porém, diferentes pontos de interceptação dos eixos, e por definição nunca se cruzam.
15
Geometria
• Nota: a função fabs(double x) inclusa na biblioteca math.h
calcula o valor absoluto de x;• A constante EPSILON é aproximadamente 0 (0,0000001).
16
Geometria
• Um ponto (x’, y’) está sobre uma linha l se a substituição de x por x’ na fórmula y=mx+b
resulta em y’;• O ponto de interseção das linhas l1 (y = m1x +
b1) e l2 (y2 = m2x + b2) é o ponto em que ambassão iguais, ou seja:
,
17
Geometria
• Quaisquer duas linhas não paralelas se cruzamformando um determinado ângulo;
• Duas linhas l1: a1x+b1y+c1=0 e l2: a2x+b2y+c2=0 se cruzam no ângulo θ dado por:
• Para linhas representadas por inclinação, a fórmula se reduz a
19
Geometria
• Duas linhas são perpendiculares se elas se cruzam em ângulo reto;
• Uma linha perpendicular à linha l: y=mx+b é y=( -1/m)x+b’– Para todos os valores de b’.
20
Geometria
• Um subproblema útil é o de identificar o pontosobre a linha l que mais se aproxime mais de um determinado ponto p;
• Este ponto mais próximo está sobre a linha quepassa por p que é perpendicular a l– Logo, pode ser determinado usando as rotinas
anteriores.
21
Geometria
• Raios são partes de linhas que se originam a partir de um vértice v, chamado de origem;
• Qualquer raio é completamente descrito por:– Uma equação de linha;– Origem– Destino– Direção ou origem e outro ponto no raio.
23
Geometria
• Existem três funções trigonométricas básicas:– Seno, Cosseno e Tangente.
• Estas funções são importantes porque nospermitem relacionar o comprimento de quaiquerdois lados de um triângulo retângulo com osoutros ângulos não retos.
24
Geometria
• Internamente, as funções trigonométricas sãocalculadas usando expansões da Série de Taylor
– Tendem a ser instáveis;– Não espere que θ = sen-1(sen(θ)), especialmente
para ângulos muito pequenos ou muito grandes.
25
Geometria
• Alguns problemas são recorrentes emtriângulos;
• Dados dois ângulos e um lado, encontre o resto– Os três ângulos devem somar 180º = π radianos;– A Lei dos Senos nos fornece um meio para
encontrar o comprimento dos lados restantes.
27
Geometria
• Dados dois lados e um ângulo, encontre o resto– Se o ângulo está entre os dois lados fornecidos,
a Lei dos Cossenos nos fornece um meio de calcular o lado restante
• A Lei dos Senos nos permite determinar os ângulosrestantes.
– Caso contrário, a Lei dos Senos e a propriedadeda soma dos ângulos podem ser usadas paradeterminar os ângulos
• E a Lei dos Senos novamente para determinar o ladorestante.
28
Geometria
• A área A(T) de um triângulo T é dada por A(T) = ½ab, em que a é a altura e b a base do triângulo– A base é qualquer um dos lados;– A altura é a altura do terceiro vértice em relação
à base (calculado pelo teorema de Pitágoras).
29
Geometria
• Uma outra maneira de calcular a área do triângulo é direta a partir de suas coordenadas– Usando álgebra linear e determinantes, pode ser
mostrado que a área (com sinal) A(T) do triângulo T=(a, b, c) é:
30
Geometria
• Note que a área com sinal pode ser negativa– Então devemos usar o valor absoluto.– Isto não é um bug do cálculo
• Na próxima aula veremos aplicações disto.
31
Geometria
• Um círculo é definido como o conjunto de pontos a uma determinada distância (ou raio) a partir de seu centro (xc, yc);
• Um disco é um círculo somado a seu interior– Ou seja, o conjunto de pontos cuja distância é no
máximo r a partir de seu centro.
32
Geometria
• Um círculo pode ser representado em duasmaneiras básicas:– Por triplas de pontos fronteiriços;– Ou por seu centro e raio
• O mais conveniente para a maioria das aplicações.
33
Geometria
• Uma linha l intercepta um círculo c em zero oudois pontos em boa parte das vezes– Neste primeiro caso, a linha não cruza o círculo;– No segundo caso, ela cruza o interior do círculo.
• O único caso restante é quando a linha toca a borda do círculo, mas não seu interior– Ou seja, é uma linha tangente.
35
Geometria
• A construção de uma linha tangente é ilustradaa seguir– O ponto de contato entre c e l está sobre a linha
perpendicular (90o) a l através do centro de c.
36
Geometria
• O que nos permite calcular a tangente x usando o teorema de Pitágoras
– Sabemos o comprimento dos lados r e d.
39
Geometria
• Dois círculos c1 e c2 de raios distintos r1 e r2
podem interagir entre si de diversas maneiras:– Eles terão uma interseção sse a distância entre
seus centros for no máximo r1+r2 ;– O menor círculo (e. g., c1) estará completamente
contido em c2 sse a distância entre os centrosmais r1 for no máximo r2;
– Se c1 e c2 possuírem interseções, os dois pontosde interseção formam triângulos com os centros, cujos lados são determinados
• r1, r2 e a distância dos centros.41
Geometria
• A biblioteca padrão math.h contém as funçõestrigonométricas padrões– O retorno das funções é em radianos.
• Outro ponto importante é o intervalo de ângulosretornado pelas funções inversas– sen-1 e tan-1: [-π/2,+π/2] radianos.– tan2-1: [-π,+π] radianos;– cos-1: [0,π] radianos.
43
Geometria
• Nota: existem duas funções arctan para identificarcorretamente em qual quadrante está o ângulo– O que depende dos sinais de x e y.
44
Exemplo de Projeto
Mais rápido que uma bala;Mais forte que uma locomotiva;Capaz de saltar sobre os prédios;É um pássaro! É um avião!Não! É o Super-Homem!
45
Exemplo de Projeto
• O Super Homem deseja demonstrar seu poderentre sua posição atual s = (xs, ys) e umaposição alvo t = (xt, yt)– O ambiente contém obstáculos cilíndricos, como
colunas• A visão de raio-x não possui alcance infinito, sendo
limitada pela quantidade de material que precisaatravessar.
– Ele está ansioso para calcular o comprimentototal dos obstáculos entre os dois pontos, parasaber se tenta a demonstração ou não.
46
Exemplo de Projeto
• Uma vez decidido, o Super Homem voará entre os dois pontos– O caminho ideal é a linha que liga os dois pontos
• Porém, ele não voa através dos objetos.
– Quando encontra um obstáculo, ele o contorna e então volta à linha reta
• O que não é o menor caminho, a não ser que se escolha a menor curva do contorno.
47
Exemplo de Projeto
• Assuma que:– Os obstáculos não possuem interseção;– Os pontos inicial e final estão fora dos
obstáculos;– A especificação dos círculos é feita pelas
coordenadas do centro e raio.
49
Exemplo de Projeto
• Precisaremos de 3 operações geométricasbásicas:1. Testar se um círculo possui interseção com
uma linha l;2. Computar o comprimento do segmento de linha
da interseção;3. Computar o comprimento do arco que contorna
o menor lado do círculo cortado por l.
50
Exemplo de Projeto
• A primeira tarefa é fácil:– Basta encontrar a menor distância entre o centro
do círculo até l
• Se for menor que o raio do círculo, há interseção;• Caso contrário, não há interseção.
– Para testar se a interseção ocorre entre s e t, basta verificar se tal ponto em l mais próximo do centro do círculo está contido na caixa formadapor s e t.
52
Exemplo de Projeto
• Já a segunda tarefa…– Podemos calcular as coordenadas dos dois
pontos de interseção• Basta igualar as equações da linha e do círculo e
resolver a equação quadrática resultante.• “Basta”? Só se for para o super homem…
– Existe uma maneira mais simples.
54
Exemplo de Projeto
• Sabemos que d, a menor distância entre o centro do círculo e l está sobre uma linhaperpendicular a l– Logo, todos os 4 ângulos da interseção destas
linhas são retos.
55
Exemplo de Projeto
• Incluindo os ângulos incidentes aos triânguloscom lados r, d e x– Podemos obter x pelo teorema de Pitágoras;– E o comprimento será 2x.
56
Exemplo de Projeto
• O arco (contorno) de menor comprimento podeser obtido a partir do ângulo a
– O arco é 2a/2π vezes a circunferência do círculo;– Em radianos.
• O ângulo pode ser computado como um dos problemas recorrentes de triângulos– Dados dois lados e um ângulo, encontre o
resto…– Ou utilizamos funções trigonométricas inversas
cos-1).57
Geometria
Sumário dos arquivos:• geometry.h: define os tipos de dados para
pontos, polígonos, segmentos de reta, círculos e triangularizações, além de constantes;
• geometry.c: implementa funções pararepresentação de linhas e segmentos de linha, testes de paralelismo, interseção, distância e áreas de algumas formas;
• superman.c: exemplo de problema que usageometria básica.
60