Skip to content
 
 

Repository files navigation

2DG

Autoria:

Diego Guerra
RA: 11201810534
Juan Oliveira de Carvalho
RA: 11201810997

Objetivos

O objetivo deste projeto é desenvolver uma aplicação simples com gráficos 2D, utilizando-se de técnicas e bibliotecas de computação gráfica.

Motivação

Este projeto foi desenvolvido tendo em mente qualquer pessoa estudando a área de grafos, visando fornecer uma visualização gráfica de grafos aleatórios de forma simples e rápida.

Live demo

Uma versão compilada em WebAssembly está disponível para ser executada em qualquer navegador web neste link.

Outra demonstração realizada no Windows 11 está disponível neste link.

Também é possível compilar o projeto localmente, seguindo as instruções de instalação do ABCg, clonando o repositório e executando os scripts build.sh ou build.bat, caso esteja no Linux ou Windows respectivamente. Os scripts irão compilar o projeto e criar um executável no diretório build.

Nos releases do repositório providenciamos um binário já compilado para Linux.

Alt text

Funcionalidades

É possível gerar tanto grafos conectados quanto desconectados, além de:

  • Determinar a quantidade de nós (de 1 a 10 nós)
  • Personalizar a cor de exibição dos nós
  • Escolher o raio dos nós exibidas

Também são exibidas algumas características do grafo gerado, como:

  • Grau de cada nó
  • Lista de adjascências dos nós
  • Tipo de grafo (conectado/ não conectado)
  • Total de nós
  • Total de arestas
  • Grau médio do grafo

Implementação

A aplicação foi implementada utilizando a biblioteca ABCg, desenvolvida pelo professor Harlen Batagelo para o curso de Computação Gráfica na UFABC, e o pipeline gráfico do OpenGL.

Desafios Enfrentados

Alinhamento dos componentes do grafo:

Inicialmente ao redimencionar ou executar o programa em uma resolução diferente da usada no desenvolvimento, os componentes do grafo ficavam desalinhados. Isto foi resolvido criando um shader para cada componente e os fixando na mesma posição, garantindo a exibição correta.

Compatibilidade com navegadores:

Outro problema encontrado foi em relação ao WebGL em navegadores diferentes, causando inconsistências na exibição de alguns shaders, fazendo com que não fossem exibidos em navegadores como Firefox. Para resolver isto tivemos que adaptar os shaders de forma compatível com ambos os navegadores.

Exibição do rótulo dos nós

Inicialmente o rótulo dos nós era exibido como texto simples, porém tivemos dificuldades para sincronizar seu posicionamento junto aos nós correspondentes (principalmente em cenários onde a janela era redimensionada), por isso tivemos que trocar o texto simples por uma fonte de bitmap no shader do texto, permitindo um melhor posicionamento e exibição em qualquer tamanho de janela.

About

First project of the course MCTA008-17 Computer Graphics at UFABC, Brazil - All credit goes to HBatagelo

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages