INSTITUTO POLITÉCNICO
Pós-graduação em Modelagem Computacional
Relatório Final
Projeto Geometria Computacional
Nova Friburgo
31 de julho de 2010
1 Introdução
Neste relatório, descrevemos as diferentes etapas do Projeto Geometria Computacional, tais
como, Implementação das Classes: Racional, Ponto2D, Linha2D, Raio2D, Segmento2D e Poli-
gono2D, Testes e Vericações e Aplicação.
As classes deste projeto, foram desenvolvidas por Marciana Amorim Lima e Melicia Aline
Cortat Ribeiro. Para que ambas pudessem desenvolver suas atividades em conjunto, e adquirir
o conhecimento da construção de todas as classes, cada uma teve a função de montar uma parte
de cada classe. Durante o desenvolvimento das classes, a dupla se reunia para vericação do
andamento e das dúvidas que surgiam.
1
necessidade de implementar algumas funções, tais como:
1. const Racional Rabs()const . Esta função calcula o módulo de um número racional,
onde não tem nenhum parâmetro de entrada e tem como parâmetro de saída um Racional.
2. Racional rpow (const int &) . Esta calcula a potência de um número Racional, tendo
um parâmetro de entrada do tipo inteiro que equivale ao expoente da potência e retorna
um Racional.
3. void Simplica(). Esta é uma função que simplica um número Racional, nela não há
parâmetros de entrada e nem saída.
Para desenvolver os algoritmos dessas funções, foram feitas pesquisas na internet, buscando as
propriedades matemáticas que se inseria em cada uma. Na referência [8] encontramos o seguinte
algoritmo,
2
2. Distancia. Esta, calcula a distância entre dois pontos.
3
Nas classes Linha2D, Raio2D e Segmento2D foi sobrecarregado apenas o operador de ex-
tração (<<) que imprime um objeto Linha2D, Raio2D e Segmento2D das seguintes formas,
respectivamente: Linha_2D[p1,p2], Raio_2D[p1,p2] e Segmento_2D[p1,p2].
A classe Raio2D é derivada da classe base Linha2D. A construção dessa classe não foi com-
plicada, pois quase tudo que foi feito na classe Linha2D foi utilizado nesta classe. Algumas
funções da classe Linha2D só precisaram ser complementadas, pois agora teriamos que fazer as
vericações observando o paramétrico do Raio2D.
As funções da classe Linha2D que sofreram algumas alterações na classe Raio2D, foram:
Pertence (const Ponto &), Ponto_Ortogonal(const Ponto &, Ponto &), Intersecao
(const Linha_2D &, Ponto &) e Intersecao (const Segmento_2D &, Ponto &)
A classe Segmento2D é derivada da classe Raio2D. Nesta classe, as mesmas funções anterior-
mente citadas passaram por mudanças, com excessão da função Intersecao (const Segmento_2D
&, Ponto &), pois agora o paramétrico do Segmento2D é que deve ser observado. Além disso,
a interseção de raio com segmento é a mesma de segmento com raio e a interseção de linha com
segmento é a mesma de segmento com linha.
P oligono_2D[v1 , v2 , v3 , v4 , ..., vn ]
onde v1 , v2 , v3 , v4 , ..., vn são os vértices do polígono no sentido que o polígono foi inserido.
O operador de inserção dene a inserção de um Poligono2D em dois passos:
4
1. Inserir número de vértices.
2. Inserir vértices (x, y), x e y números racionais. Como já vimos x ou y são inseridos como:
a/b.
Na fase nal do projeto, a equipe dividiu a tarefa de construção da classe Poligono2D e a
documentação de todo o projeto no software Doxygen. A aluna Marciana cou responsável pela
primeira tarefa e a aluna Melicia pela segunda.
Figura 4: Polígono 3
5
3 Aplicação
• Determinar o número de câmeras necessárias para observar uma sala com uma geometria
qualquer.
Figura 5: Polígono 1
Figura 6: Polígono 2
6
Figura 7: Polígono 3
As setas nas guras indicam o sentido que o polígono foi inserido. Como podemos ver na
Fig.(5), para uma sala com essa geometria seria necessário apenas um guarda para cobrir toda a
área, sendo que há apenas uma possibilidade para o ponto estratégico. Já na Fig(6) apenas dois
guardas cobririam toda a área. Como podemos observar existem três possibilidades de pontos
estratégicos. Na Fig(7) só há uma possibilidade de pontos estratégicos, sendo toda área coberta
por apenas dois guardas.
4 Considerações nais
Durante a construção deste projeto, pude perceber a necessidade dos conhecimentos básicos
de programação em c++ e aprender a identicar os erros que geralmente aparecem e corrigí-los.
Além disso, aprendi analisar as informações disponíveis na internet, fóruns e nos livros e apostilas
de programação.
Como exposto nas seções anteriores, alguns erros foram encontrados, e com a ajuda do
professor, pudemos analisá-los para entender o que estava ocasionando-os. Com a aplicação
desenvolvida, pude vericar que as classes do projeto mostraram resultados satisfatórios.
Diante disso, posso dizer que esta disciplina trouxe grandes desaos, busquei absorver o
máximo de conhecimentos para poder caminhar durante o curso com rmeza e com base, uma
vez que estarei desenvolvendo todos os meus trabalhos e talvez a dissertação em torno desta
linguagem de programação.
Referências
[1] Deitel, H. M. e Deitel, P. J. C++
Como Programar 5a Edição, Editora Pearson, 2006
[2] DOLCE, O., POMPEO, J. N., Fundamentos de Matemática Elementar 9 - Geometria Plana
- Volume IX - 7a ed. - São Paulo: Atual Editora, 1997.
[3] MIZRAHI, V. V., Treinamento em Linguagem C++ - Módulo I - São Paulo: Makron Books,
1994.
[4] VENTURI, J. J., Álgebra Vetorial e Álgebra Analítica - 9a ed. - Curitiba: Unicado, 1949.
7
[5] http://www.ic.ufmt.br/siteIC/downloads/professores/aula7-CLP-Sobrecarga-de-
operadores.pdf. Acessado em 27 de maio de 2010.
[6] http://www.ic.ufmt.br/siteIC/downloads/professores/aula7-CLP-Sobrecarga-de- operado-
res.pdf. Acessado em 27 de maio de 2010.
[7] http://www.ime.usp.br/ freitas/gc. Acessado em: 28 de maio de 2010.
[8] http://www.profcardy.com/cardicas/euclides.php?&width=1280, acessado em 02 de junho
2010.
[9] http://www2.mat.ua.pt/disciplinas/geocomp/Acetatos/ACECG05.pdf. Acessado em: 21 de
junho de 2010.
[10] http://www.ime.usp.br/ cris/mac331/notas-de-aula/inter-seg.pdf. Acessado em: 21 de ju-
nho de 2010.
[11] http://softsurfer.com/Archive/algorithm_0104/algorithm_0104B.htm. Acessado em: 21 de
junho de 2010.
[12] Disponível em: <http://www.geogebra.org/cms/>. Acessado em: 09 de julho de 2010.
[13] http://www.professeurs.polymtl.ca/michel.gagnon/Disciplinas/Bac/Grafos/Color/color.html.
Acessado em 25 de julho de 2010.