CIC 111 Análise e Projeto de Algoritmos II

Documentos relacionados
CIC 111 Análise e Projeto de Algoritmos II

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1

CÁLCULO I. Lista Semanal 01 - Gabarito

Professor: Anselmo Montenegro Conteúdo: Aula 2. - Primitivas Geométricas. Instituto de Computação - UFF

Ponto q está no polígono?

Aula 5 - Produto Vetorial

Coordenadas Cartesianas

1 Vetores no Plano. O segmento de reta orientada P Q tem P como ponto inicial, Q como ponto nal e

8º ANO ENSINO FUNDAMENTAL Matemática. 1º Trimestre 45 questões 26 de abril (Sexta-feira)

VETORES + O - vetor V 2 vetor posição do ponto P 2

Primitivas Geométricas

Capítulo 1-Sistemas de Coordenadas

Material Teórico - Módulo: Vetores em R 2 e R 3. Módulo e Produto Escalar - Parte 2. Terceiro Ano - Médio

P R O P O S T A D E R E S O L U Ç Ã O D O E X A M E T I P O 6

CIC 111 Análise e Projeto de Algoritmos II

Geometria Analítica. Geometria Analítica 28/08/2012

Área e Teorema Fundamental do Cálculo

FICHA de AVALIAÇÃO de MATEMÁTICA A 10.º Ano de escolaridade Versão 2

Universidade Federal do Pará Curso de Licenciatura em Matemática PARFOR Lista de Exercícios Referentes a Prova Substitutiva de Geometria Analítica

ESCOLA E B 2,3/S MIGUEL LEITÃO DE ANDRADA - AGRUPAMENTO DE ESCOLAS DE PEDRÓGÃO GRANDE DEPARTAMENTO DAS CIÊNCIAS EXATAS 2015/2016

CIC 111 Análise e Projeto de Algoritmos II

Chamamos de grandezas coisas que podem ser medidas. Por exemplo, tempo, área, volume, temperatura, velocidade, aceleração, força, etc..

Análise e Complexidade de Algoritmos

1.0. Conceitos Utilizar os critérios de divisibilidade por 2, 3, 5 e Utilizar o algoritmo da divisão de Euclides.

Geometria Computacional Primitivas Geométricas. Claudio Esperança Paulo Roma Cavalcanti

Planificação do 1º Período

Distância e Geometria

CENTRO DE CIÊNCIAS E TECNOLOGIA AGROALIMENTAR UNIDADE ACADÊMICA DE TECNOLOGIA DE ALIMENTOS DISCIPLINA: FÍSICA I ROTAÇÃO. Prof.

à situação. à situação.

Planificação do 1º Período

3 Vetores

CIC 111 Análise e Projeto de Algoritmos II

P R O P O S T A D E R E S O L U Ç Ã O D O E X A M E T I P O 7

1 Vetores no Plano e no Espaço

ROTEIRO: 1. Cap. 2 Plano Cartesiano; 2. Vetores.

CENTRO DE CIÊNCIAS E TECNOLOGIA AGROALIMENTAR UNIDADE ACADÊMICA DE TECNOLOGIA DE ALIMENTOS DISCIPLINA: FÍSICA I ROTAÇÃO. Prof.

PROPOSTA DE RESOLUÇÃO DA PROVA DE MATEMÁTICA A DO ENSINO SECUNDÁRIO (CÓDIGO DA PROVA 635) 2ª FASE 20 DE JULHO 2018 CADERNO 1

Preliminares de Cálculo

GAAL /1 - Simulado - 2 produto escalar, produto vetorial, retas e planos. Exercício 1: Determine a equação do plano em cada situação descrita.

Coordenadas e distância na reta e no plano

Jorge M. V. Capela, Marisa V. Capela. Araraquara, SP

Capítulo 1-Sistemas de Coordenadas, Intervalos e Inequações

J. Delgado - K. Frensel - L. Crissaff Geometria Analítica e Cálculo Vetorial

Curso de Férias de IFVV (Etapa 3) INTEGRAIS DUPLAS

Estudo Dirigido - Desvendando a Geometria Analítica: Distância entre dois pontos

PROPOSTA DE RESOLUÇÃO DA PROVA DE MATEMÁTICA A DO ENSINO SECUNDÁRIO (CÓDIGO DA PROVA 635) 2ª FASE 20 DE JULHO 2018 CADERNO 1

Geometria Analítica Plana

Funções do Plano Complexo(MAT162) Notas de Aulas Prof Carlos Alberto S Soares

Vetores no plano Cartesiano

FICHA de AVALIAÇÃO de MATEMÁTICA A 10.º Ano de escolaridade Versão 1

1: Grandezas vetoriais e grandezas escalares

Resistência dos Materiais

Escalas em Gráficos. Pré-Cálculo. Cuidado! Cuidado! Humberto José Bortolossi. Parte 4. Um círculo é desenhado como uma elipse.

Vetores. Prof. Marco Simões

3) O ponto P(a, 2) é equidistante dos pontos A(3, 1) e B(2, 4). Calcular a abscissa a do ponto P.

Matemática Básica II - Trigonometria Nota 01 - Sistema de Coordenadas no Plano

TOPOGRAFIA II CÁLCULO DE ÁREA

A GEOMETRIA DINÂMICA COMO FERRAMENTA DE ESTUDO NA TEORIA DOS ESPAÇOS NORMADOS

SEGUNDA PROVA. Segunda prova: 11/maio, sábado, 08:00 ou 10:00 horas. Capítulo 4: Vetores, produto escalar, produto vetorial.

GAAL /1 - Simulado - 3 exercícios variados de retas e planos

CÁLCULO I. Lista Semanal 01 - Gabarito

Algoritmos geométricos

A B C A 1 B 1 C 1 A 2 B 2 C 2 é zero (exceto o caso em que as tres retas são paralelas).

MATRIZ DE REFERÊNCIA DE MATEMÁTICA PROVA FLORIPA MATEMÁTICA - 1º ANO DO ENSINO FUNDAMENTAL

Departamento de Matemática e Ciências Experimentais PLANO DE ESTUDO MATEMÁTICA 2015/2016 5º Ano de escolaridade

Conceitos básicos de Geometria:

Lista de Álgebra Linear Aplicada

Geometria COM11087-Tópicos Especiais em Programação II

CURSO INTRODUTÓRIO DE MATEMÁTICA PARA ENGENHARIA Vetores. Mateus Barros 3º Período Engenharia Civil

Título do Livro. Capítulo 5

João esqueceu-se do seu código, mas lembra-se que é divisível por 9. Quantos códigos existem nessas condições?

Exemplo Aplicando a proporcionalidade existente no Teorema de Tales, determine o valor dos segmentos AB e BC na ilustração a seguir:

CIC 110 Análise e Projeto de Algoritmos I

Aula 32 Curvas em coordenadas polares

Prova Escrita de MATEMÁTICA A - 12o Ano a Fase

RESISTÊNCIA DOS MATERIAIS AULAS 01

MATEMÁTICA A - 12o Ano N o s Complexos - Potências e raízes Propostas de resolução

Lista de Exercícios de Cálculo 3 Primeira Semana

GA - Retas no espaço euclidiano tridimensional

1º período ( 16 de Setembro a 17 de Dezembro) 38 blocos = 76 aulas

Geometria Analítica. Prof. M.Sc. Guilherme Schünemann

MATEMÁTICA PLANEJAMENTO 2º BIMESTRE º B - 11 Anos

Material Teórico - Módulo: Vetores em R 2 e R 3. Produto Vetorial. Terceiro Ano - Médio

1ª Ana e Eduardo. Competência Objeto de aprendizagem Habilidade

Introdução ao Cálculo Vetorial

MA23 - Geometria Anaĺıtica

30 o 50 o 70 o 90 o 110 o 130 o 150 o 170 o 190 o 210 o 230 o 250 o 270 o 290 o 310 o 330 o 350 o

araribá matemática Quadro de conteúdos e objetivos Quadro de conteúdos e objetivos Unidade 1 Números inteiros adição e subtração

Conteúdos Ideias-Chave Objectivos específicos. múltiplo de outro número, este é divisor do primeiro.

18REV - Revisão. LMAT 3B-2 - Geometria Analítica. Questão 1

MATEMÁTICA A - 12o Ano N o s Complexos - Equações e problemas Propostas de resolução

Teorema da Galeria de Arte

Computação Gráfica. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro. Aula 3. Transformações Geométricas

FICHA de AVALIAÇÃO de MATEMÁTICA A 11.º Ano Versão 2

Física Geral Grandezas

CIC 111 Análise e Projeto de Algoritmos II

Conceitos de vetores. Decomposição de vetores

OPRM a Fase Nível 1 01/09/18 Duração: 4 horas

Geometria Analítica. Cônicas. Prof Marcelo Maraschin de Souza

Transcrição:

CIC 111 Análise e Projeto de Algoritmos II Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá

AULA 29 Geometry Complex numbers Points and lines Polygon area Distance functions

Geometry Em problemas geométricos, muitas vezes é difícil encontrar uma maneira de abordar o problema para que a solução para o problema possa ser convenientemente implementada e o número de casos especiais seja pequeno. Como exemplo, considere um problema onde recebemos os vértices de um quadrilátero (um polígono que tem quatro vértices) e nossa tarefa é calcular sua área. Por exemplo, uma entrada possível para o problema é a seguinte:

Geometry Uma maneira de abordar o problema é dividir o quadrilátero em dois triângulos por uma linha reta entre dois vértices opostos:

Geometry Depois disso, basta somar as áreas dos triângulos. A área de um triângulo pode ser calculada, por exemplo, usando a fórmula de Heron s(s a)(s b)(s c), onde a, b e c são os comprimentos dos lados do triângulo e s = (a + b + c) / 2.

Geometry Esta é uma maneira possível de resolver o problema, mas há uma armadilha: como dividir o quadrilátero em triângulos? Acontece que às vezes não podemos escolher apenas dois vértices arbitrários opostos. Por exemplo, na seguinte situação, a linha de divisão está fora do quadrilátero: No entanto, outra maneira de desenhar a linha funciona:

Geometry É claro para um humano qual das linhas é a escolha correta, mas a situação é difícil para um computador. No entanto, descobrimos que podemos resolver o problema usando outro método que seja mais conveniente para um programador. Ou seja, existe uma fórmula geral x 1 y 2 x 2 y 1 +x 2 y 3 x 3 y 2 + x 3 y 4 x 4 y 3 +x 4 y 1 x 1 y 4, que calcula a área de um quadrilátero cujos vértices são (x 1, y 1 ), (x 2, y 2 ), (x 3, y 3 ) e (x 4, y 4 ). Essa fórmula é fácil de implementar, não há casos especiais e podemos até generalizar a fórmula para todos os polígonos.

Complex Numbers Um número complexo é um número da forma x + yi, onde i = - 1 é a unidade imaginária. Uma interpretação geométrica de um número complexo é que ele representa um ponto bidimensional (x, y) ou um vetor da origem até um ponto (x, y). Por exemplo, 4 + 2i corresponde ao seguinte ponto e vetor: (4,2)

Complex Numbers O complexo de classes C ++ de numéricos complexos é útil na resolução de problemas geométricos. Usando a classe, podemos representar pontos e vetores como números complexos, e a classe contém ferramentas que são úteis na geometria. No código a seguir, C é o tipo de uma coordenada e P é o tipo de um ponto ou um vetor. Além disso, o código define as macros X e Y que podem ser usadas para se referir às coordenadas x e y.

Complex Numbers typedef long long C; typedef complex<c> P; #define X real() #define Y imag() Por exemplo, o código a seguir define um ponto p = (4, 2) e imprime suas coordenadas x e y: P p = {4,2}; cout << p.x << " " << p.y << "\n"; // 4 2 O código a seguir define os vetores v = (3, 1) e u = (2, 2) e, depois disso, calcula a soma s = v + u. P v = {3,1}; P u = {2,2}; P s = v+u; cout << s.x << " " << s.y << "\n"; // 5 3

Complex Numbers Na prática, um tipo de coordenada apropriado é geralmente longo (inteiro) ou longo duplo (número real). É uma boa ideia usar inteiro sempre que possível, porque os cálculos com números inteiros são exatos. Se forem necessários números reais, erros de precisão devem ser levados em conta ao comparar números. Uma maneira segura de verificar se os números reais a e b são iguais é compará-los usando a - b < ξ, em que ξ é um número pequeno (por exemplo, ξ = 10-9 ).

Functions Nos exemplos a seguir, o tipo de coordenada é longo duplo. A função abs(v) calcula o comprimento v de um vector v = (x, y) usando a fórmula x 2 + y 2. A função também pode ser usada para calcular a distância entre os pontos (x 1, y 1 ) e (x 2, y 2 ), porque essa distância é igual ao comprimento do vetor (x 2 - x 1, y 2 - y 1 ). O código a seguir calcula a distância entre os pontos (4, 2) e (3, - 1): P a = {4,2}; P b = {3,-1}; cout << abs(b-a) << "\n"; // 3.16228

Functions A função arg(v) calcula o ângulo de um vetor v = (x, y) em relação ao eixo x. A função dá o ângulo em radianos, onde r radianos é igual a 180 r / π graus. O ângulo de um vetor que aponta para a direita é 0 e os ângulos diminuem no sentido horário e aumentam no sentido anti-horário. A função polar(s, a) constrói um vetor cujo comprimento é s e que aponta para um ângulo a. Um vetor pode ser girado por um ângulo a, multiplicando-o por um vetor com comprimento 1 e ângulo a.

Functions O código a seguir calcula o ângulo do vetor (4, 2), gira 1/2 radianos no sentido anti-horário e calcula o ângulo novamente: P v = {4,2}; cout << arg(v) << "\n"; // 0.463648 v *= polar(1.0,0.5); cout << arg(v) << "\n"; // 0.963648

Points and Lines O produto escalar a b dos vetores a = (x 1, y 1 ) e b = (x 2, y 2 ) é calculado usando a fórmula x 1 y 2 - x 2 y 1. O produto escalar nos diz se b vira à esquerda (valor positivo), não vira (zero) ou vira à direita (valor negativo) quando é colocado diretamente depois de a. A figura a seguir ilustra os casos acima: b b a a a b a b=6 a b=0 a b= 8

Points and Lines Por exemplo, no primeiro caso a = (4, 2) e b = (1, 2). O código a seguir calcula o produto cruzado usando a classe de número complexo: P a = {4,2}; P b = {1,2}; C p = (conj(a)*b).y; // 6 O código acima funciona, porque a função conj nega a coordenada y de um vetor, e quando os vetores (x 1, -y 1 ) e (x 2, y 2 ) são multiplicados juntos, a coordenada y do resultado é x 1 y 2 - x 2 y 1.

Point Location Os produtos escalares podem ser usados para testar se um ponto está localizado à esquerda ou à direita de uma linha. Suponha que a linha passe pelos pontos s 1 e s 2, estamos olhando de s 1 para s 2 e o ponto é p. Por exemplo, na figura a seguir, p está no lado esquerdo da linha: p s 1 s 2

Point Location O produto escalar de (p - s 1 ) (p - s 2 ) nos informa a localização do ponto p. Se o produto escalar for escalar, p está localizado no lado esquerdo, e se o produto escalar for negativo, p está localizado no lado direito. Finalmente, se o produto vetorial é zero, os pontos s 1, s 2 e p estão na mesma linha. s 1 p s 2

Line Segment Intersection Em seguida, consideramos o problema de testar se dois segmentos de linha ab e cd se cruzam. Os casos possíveis são: Caso 1: os segmentos de linha estão na mesma linha e se sobrepõem. Nesse caso, há um número infinito de pontos de interseção. Por exemplo, na figura a seguir, todos os pontos entre c e b são pontos de interseção: a c d b

Line Segment Intersection Este caso é fácil de verificar, porque existem apenas quatro possibilidades para o ponto de interseção: a = c, a = d, b = c e b = d. Caso 3: Existe exatamente um ponto de interseção que não é um vértice de nenhum segmento de linha. Na figura a seguir, o ponto p é o ponto de interseção: c b p a d

Line Segment Intersection Neste caso, os segmentos de linha se cruzam exatamente quando ambos os pontos c e d estão em lados diferentes de uma linha através de a e b, e os pontos a e b estão em lados diferentes de uma linha através de c e d. Podemos usar produtos escalares para verificar isso.

Point Distance from a Line Outra característica dos produtos cruzados é que a área de um triângulo pode ser calculada usando a fórmula (a c) (b c) 2 onde a, b e c são os vértices do triângulo. Usando esse fato, podemos derivar uma fórmula para calcular a menor distância entre um ponto e uma linha. Por exemplo, na figura a seguir, d é a menor distância entre o ponto p e a linha que é definida pelos pontos s 1 e s 2,

Point Distance from a Line p d s 2 s 1 A área do triângulo cujos vértices são s 1, s 2 e p pode ser calculada de duas maneiras: é 2 s 2 s 1 e. Assim, a menor distância é 1 2 ((s 1 p) (s 2 p)) d= (s 1 p) (s 2 p) s 2 s 1 1.

Point Inside a Polygon Vamos agora considerar o problema de testar se um ponto está localizado dentro ou fora de um polígono. Por exemplo, no seguinte ponto de imagem a está dentro do polígono e o ponto b está fora do polígono. b a

Point Inside a Polygon Uma maneira conveniente de resolver o problema é enviar um raio do ponto para uma direção arbitrária e calcular o número de vezes que ele toca o limite do polígono. Se o número for ímpar, o ponto estará dentro do polígono e, se o número for par, o ponto estará fora do polígono. Por exemplo, podemos enviar os seguintes raios:

Point Inside a Polygon b a Os raios de a tocom 1 e 3 vezes o limite do polígono, então a está dentro do polígono. Correspondentemente, os raios de b tocam 0 e 2 vezes o limite do polígono, portanto b está fora do polígono.

Polygon Area Uma fórmula geral para calcular a área de um polígono, às vezes chamada de fórmula de cadarço, é a seguinte: n 1 1 2 i=1 ( p i p i+1 ) = 1 ) n 1 2 ( x i y i+1 x i+1 y, i i=1 Aqui os vértices são p 1 = (x 1, y 1 ), p 2 = (x 2, y 2 ),, p n = (x n, y n ) em tal ordem que p i e p i + 1 são vértices adjacentes no limite do polígono, e o primeiro e último vértice é o mesmo, ou seja, p 1 = p n.

Polygon Area Por exemplo, a área do polígono (3,6) (6,6) (4,5) é (2,4) (5,3) (2 6 3 4)+(3 6 6 6)+(6 3 5 6)+(5 5 4 3)+(4 4 2 5) = 11 2 2

Polygon Area A ideia da fórmula é percorrer trapezoides cujo lado é um lado do polígono, e outro lado está na linha horizontal y = 0. Por exemplo: (3,6) (6,6) (4,5) (2,4) (5,3)

Polygon Area A área do trapézio é (x i+1 x i )( y i+1 + y i ) 2, onde os vértices do polígono são p i e p i + 1. Se x i + 1 > x i, a área é positiva e, se x i + 1 < x i, a área é negativa. A área do polígono é a soma das áreas de todos esses trapézios, o que produz a fórmula n 1 (x i+1 x i )( y i+1 + y i ) n 1 i=1 2 =1 2 i=1 (x i y i+1 x i+1 y i ),

Polygon Area Observe que o valor absoluto da soma é obtido, porque o valor da soma pode ser positivo ou negativo, dependendo de andarmos no sentido horário ou anti-horário ao longo do limite do polígono.

Pick s Theorem O teorema de Pick fornece outra maneira de calcular a área de um polígono, desde que todos os vértices do polígono tenham coordenadas inteiras. De acordo com o teorema de Pick, a área do polígono é a + b / 2-1 onde a é o número de pontos inteiros dentro do polígono e b é o número de pontos inteiros no limite do polígono.

Pick s Theorem Por exemplo, a área do polígono (3,6) (6,6) (4,5) (2,4) (5,3) é 3 + 7/2-1 = 11/2.

Distance Functions Uma função de distância define a distância entre dois pontos. A função de distância usual é a distância euclidiana onde a distância entre os pontos (x 1, y 1 ) e (x 2, y 2 ) é Uma função de distância alternativa é a distância de Manhattan onde a distância entre pontos (x 1, y 1 ) e (x 2, y 2 ) é ( x 2 x 1 ) 2 +( y 2 y 1 ) 2. x 2 x 1 + y 2 y 1.

Distance Functions Por exemplo, considere a seguinte imagem: (5,2) (5,2) (2,1) Distância Euclideana (2,1) Distância Manhattan

Distance Functions A distância euclidiana entre os pontos é (5 2) 2 +(2 1) 2 = 10. e a distância de Manhattan é 5 2 + 2 1 =4. A figura a seguir mostra regiões que estão a uma distância de 1 do ponto central, usando as distâncias euclidiana e de Manhattan: Distância Euclideana Distância Manhattan

Rotating Coordinates Alguns problemas são mais fáceis de resolver se forem usadas distâncias de Manhattan em vez de distâncias euclidianas. Como exemplo, considere um problema em que recebemos n pontos no plano bidimensional e nossa tarefa é calcular a distância máxima de Manhattan entre dois pontos. Por exemplo, considere o seguinte conjunto de pontos: A B C D

Rotating Coordinates A distância máxima de Manhattan é 5 entre os pontos B e C: A B C D Uma técnica útil relacionada às distâncias de Manhattan é girar todas as coordenadas em 45 graus para que um ponto (x, y) se torne (x + y, y - x). Por exemplo, depois de girar os pontos acima, o resultado é:

Rotating Coordinates Considere dois pontos p 1 = (x 1, y 1 ) e p 2 = (x 2, y 2 ) cujas coordenadas rotacionadas são p 1 = (x 1, y 1 ) e p 2 = (x 2, y 2 ). Agora existem duas maneiras de expressar a distância de Manhattan entre p 1 e p 2 : x 2 x 1 + y 2 y 1 =max ( x ' 2 x' 1, y ' 2 y ' 1 ). Por exemplo, se p 1 = (1, 0) e p 2 = (3, 3), as coordenadas rotacionadas são p 1 = (1, - 1) e p 2 = (6, 0) e a distância de Manhattan é 3 1 + 3 0 =max ( 1 6, 1 0 ).

Rotating Coordinates As coordenadas rotacionadas fornecem uma maneira simples de operar com as distâncias de Manhattan, porque podemos considerar as coordenadas x e y separadamente. Para maximizar a distância de Manhattan entre dois pontos, devemos encontrar dois pontos cujas coordenadas rotacionadas maximizam o valor de max ( x ' 2 x ' 1, y ' 2 y ' 1 ). Isso é fácil, porque a diferença horizontal ou vertical das coordenadas rotacionadas deve ser máxima.

Rule Os alunos devem: Ler e descrever os problemas; Avaliar a solução e descrevê-la cada um dos problemas; Identificar as técnicas utilizadas e adicionar a cada problema; Apresentar as bibliografias referentes aos assuntos; Montar a conclusão do trabalho em cima do que foi realizado no documento; Colocar em anexo o código do problema. (obrigatório) Deve usar os arquivos que estão na página do professor. Data da Entrega: 01/06/2018 as 23:00hs

URI 1875 UVa 11524 Group One

UVa 10991 URI 2158 Group Two

UVa 11227 URI 2518 Group Three

UVa 10263 URI 1124 Group Four

UVa 11068 URI 1834 Group Five

Sites visitar