Este trabalho deverá ser desenvolvido forma individual Data da entrega: 28/04/2021
Objetivo
O objetivo deste trabalho é criar um programa que realize operações boolenas de união, interserção e diferença entre polígonos, avaliando o desempenho de algoritmos de aceleração de colisão
O programa deverá ler dois polígonos descritos em arquivos conforme o programa-exemplo apresentado a seguir.
Para a leitura, o usuário deve informar os nomes dos dois arquivos.
Para Java, você pode usar como base o programas, mas ele
carrega e exibe apenas um polígono por vez:
Na forma atual, os programas em C++ e Python carregam os arquivos com objetos e exibe ambos na tela, conforme a figura a seguir.
Figura - Programa-Exemplo que Carrega os Polígonos
Para o trabalho, estes polígonos deverão ser
substituídos por outros com pelo menos 1000 vértices cada um. Um
exemplo destes polígonos pode ser visto aqui.
A partir disto, os dois polígonos (A e B) devem ser exibidos na tela,
em cores distintas. A exibição deve ser feita de tal forma que os
polígonos apareçam na parte superiro da janela.
A seguir, o programa deve permitir que o usuário ative as seguintes operações
booleanas.
A união B
A interseção B
A - B
B - A
Após a execução destas operações, o programa deve exibir na parte inferior da
janela os polígonos resultantes. A figura a seguir exemplifica a execução das operações, considerando A e B como dois retângulos.
Além de exibir os 4 polígonos na tela, o
programa deverá salvar automaticamente cada um deles em arquivos
distintos, no mesmo formato do polígonos de entrada e permitir que o
usuário reinicie o processo de realização das operações boolenas,
escolhendo quaisquer outros dois polígonos para tanto.
Teste com algoritmos de Aceleração de Colisão
Para a realização dos testes de inclusão de ponto e de cálculo de interseção, devem ser testados os seguintes métodos de aceleração:
Ao final, o programa deverá gerar um relatório
do comportamento dos algoritmos. Neste relatório devem estar presentes
informações a respeito das fases inclusão e interseção. Para cada algoritmo de aceleração, devem ser informado o número de vezes que cada um foi de fato executado.
Exemplos de Polígonos
Um exemplo de polígono que pode ser usado neste trabalho é o mapa do estado do RS, como no exemplo da figura a seguir.
Figura - Exemplo de Polígono
Para obter novos mapas, você pode utiizar ferramentas que manipulam o formato Shape File, como:
Não serão aceitos trabalhos que não sejam genéricos quanto ao número de objetos gráficos manipulados.
Não deve ser necessário sair do programa para realizar a tarefa de escolher dois novos polígonos para operar.
O programa deve permitir que as operações sejam repetidas quantas vezes o usuário desejar.
Entrega
Data de entrega no Moodle e apresentação: 28/04/2021 até o horário de início da aula.
Os trabalhos podem ser desenvolvidos em
duplas. Os arquivos, contendo os fontes do programa, devem ser
compactados e submetidos pelo Moodle até a data e hora especificadas.
ENVIE APENAS ARQUIVOS .ZIP, ou seja, não envie 7z, rar, tar.gz, tgz,
tar.bz2, etc.
A nota do trabalho depende da
apresentação deste, na data marcada. Trabalhos entregues mas não
apresentados terão sua nota anulada automaticamente.
A cópia parcial ou completa do trabalho terá como consequência a atribuição de nota ZERO ao trabalho dos alunos envolvidos.