Repositório destinado à disciplina de Computação Gráfica - PUC MG
O arquivo é estruturado em um arquivo main main.py onde é concentrado toda a lógica de código da interface funcional. Requisitos:
O arquivo image_workspace.py contém a lógica funcional do canvas, que permite desenhar, apagar e trocar de cores, além de atualizar as coordenadas (x,y) do usuário.
As tecnologias utilizadas nesse projeto são:
- Python 3+
- Pip3
A biblioteca utilizada nesse projeto é a biblioteca tkinter, que permite a criação de interfaces a partir de código escrito em python.
Necessário instalar o PyInstaller:
pip install Pyinstaller
Para gerar o executável:
pyinstaller -w -F main.py
Para executar:
./dist/main.exe
O código fonte pode ser executado com python3 main.py
.
Outra alternativa é executar o arquivo executável main
presente no diretório principal do projeto.
DDA Line generation Algorithm in Computer Graphics
O algoritmo DDA é descrito na literatura com um algoritmo de computacão gráfica para desenho de linhas. Os atributos de entrada do algoritmo são os pontos (x1,y1) e (x2, y2), em que a linha será desenhada entre esses pontos.
O algoritmo funciona da seguinte forma:
- Calcula a diferença entre as coordenadas x (dX) e coordenadas y (dY)
- Se dX > dY então incrementa-se o "passo" do algoritmo, ou seja, em que direção será incrementado com dX. Caso contrário incrementa-se com dY
- Calcula-se o incremento em x e y, dividindo pelos passos.
- Arredonda-se os valores de x e y para pintar o pixel.
- O valor do X atual é incrementado com o incremento com o incremento de X e Y com o incremento de Y
O algoritmo de Bresenham é descrito como um algoritmo de rasterização utilizado, nesse projeto, para desenhar retas em um workspace. Par isso o algoritmo recebe de entrada os pontos: (x1, y1) inicias e (x2, y2) finais.
O algoritmo está implementado na classe image_workspace e disponível na interface do projeto.
O algoritmo de Flood Fill, também conhecido como algoritmo de preenchimento de área, é um algoritmo utilizado em processamento de imagens e computação gráfica para preencher uma área delimitada por contornos com uma cor específica. O objetivo principal do algoritmo é colorir todas as partes conectadas de uma área delimitada por uma borda, de modo que nenhum pixel dentro da área permaneça com sua cor original.
Nesse projeto, Flood Fill foi implementado utilizando iteração em uma pilha.
Boundary Fill é uma técnica essencial para preencher áreas delimitadas em gráficos e imagens, permitindo que as regiões sejam coloridas de maneira consistente e controlada pelo usuário. Sua implementação pode variar em termos de eficiência e detalhes específicos da linguagem de programação utilizada.
Nesse projeto, Boundary Fill foi implementado utilizando recursão e exige uma alteração de limite de stack da linguagem.