Prof. Luiz Fernando Martha
e-mail: lfm@tecgraf.puc-rio.br
Pontifícia Universidade Católica do Rio de Janeiro - PUC-Rio -
Departamento de Engenharia Civil e Ambiental
Prof. André Maués Brabo Pereira
e-mail: andremaues@id.uff.br
Universidade Federal Fluminense - UFF
Horário
Geral
Aulas
Aula 01 - 08/mar/2024 - Apresentação do ambiente de desenvolvimento e do curso.
Apresentação do ambiente de desenvolvimento – Python, Visual Studio Code e Qt.
Desenvolvimento de programas simples com o ambiente:
Programa muito simples "Hello World" em Python usando Qt 5:
Instruções para criação do programa.
Arquivo do programa.
Programa simples em Python usando Qt 5 para efetuar a soma de dois números:
Instruções para criação do programa.
Arquivo do programa.
Introdução à computação gráfica para desenvolvimento de programas de simulação gráfica de problemas de engenharia.
Aula 02 - 15/mar/2024 - Desenvolvimento de uma calculadora RPN (console) em Python e Introdução à Programação Orientada a Objetos.
Python basics: array, list and class (baseado nos vídeos de Amanda Brandão - Canal no YouTube - Python para iniciantes).
Calculadora RPN: Programa em Python criado com o Visual Studio Code para efetuar operações algébricas entre números inteiros uma calculadora funcionando com console usando RPN:
Instruções para criação do programa.
Versão do programa com pilha implementada como array.
Versão do programa com pilha implementada como lista.
Versão do programa com calculadora como herança de pilha.
Modelagem Orientada a Objetos da calculadora RPN.
Fundamentos de Orientação a Objetos e UML, Danielle Duque Estrada Pacheco, capítulo 3 de Estruturas de Dados
Topológicas para Modelagem Geométrica Bidimensional de Problemas de Engenharia, Projeto Final de Graduação, Universidade Federal Fluminense -
Departamento de Engenharia Civil, 2011.
Trabalho 1: Calculadora RPN GUI com Qt.
Qt Widgets and layouts.
Aula 03 - 05/abr/2024 - Visualização bidimensional com OpenGL. Transformações geométricas 2D. Transformação Window-Viewport.
Roteiro para criação de um programa simples em Python para desenho 2D usando Visual Studio Code, Qt 5 e OpenGL.
Programa MyGLDrawer.
Transformações geométricas 2D - Transformação Window-Viewport.
Chap. 4: World Windows, Viewports & Clipping: notas de aula do
Prof. Abel Gomes, Department of Computer Science, University of Beira Interior, Portugal.
Aula 04 - 12/abr/2024 - Tratamento de cor. Padrão/biblioteca gráfica OpenGL. Programação em um ambiente gráfico interativo dirigido por eventos. Paradigma de signals & slots do Qt.
Computação Gráfica - Cor & OpenGL.
Programação Orientada a Eventos em Sistemas de Interfaces com o Usuário.
Qt: Paradigma de Signals & Slots.
Qt object model and the signal slot concept.
Aula 05 - 19/abr/2024 - Eventos de mouse em canvas.
Programa simples para entendimento de eventos de mouse em canvas OpenGL usando Qt.
Explicação do programa simples.
Executável da solução do programa simples.
Aula 06 - 26/abr/2024 - Representações digitais de curvas.
Representação digital de curvas.
Trabalho 3: Coleta interativa de curvas.
Aula 07 - 03/mai/2024 - Introdução à Geometria Computacional. Tesselagem de regiões bidimensionais.
Aula 08 - 10/mai/2024 - Introdução à Geometria Computacional. Algoritmos de interseção de segmentos de reta. Teste de proximidade e inclusão de pontos em regiões.
Aula 09 - 17/mai/2024 - Geração de malhas de elementos finitos: algoritmos de mapeamento, avanço de fronteiras e triangulação Delaunay.
Aula 10 - 24/mai/2024 - Transformações geométricas para visualização 3D e modelo de câmera.
Aula 11 - 07/jun/2024 - Transformações geométricas para controle de visualização 3D.
Aula 12 - 14/jun/2024 - Modelagem de sólidos manifold e de subdivisões planares. Estruturas de dados topológicas manifold. Estrutura de dados Half-edge.
Trabalhos
Serão propostos trabalhos individuais durante o curso conforme divulgado no programa mostrado abaixo.
Trabalho 1: Calculadora RPN GUI com Qt.
Enunciado do primeiro trabalho.
Código do programa e arquivos de projeto.
Executável da solução do trabalho.
Trabalho 2: Visualização bidimensional com Qt e OpenGL.
Enunciado do segundo trabalho.
Código do programa e arquivos de projeto.
Executável da solução do trabalho.
Trabalho 3: Coleta interativa de curvas.
Enunciado do terceiro trabalho.
Código do programa e arquivos de projeto.
Executável da solução do trabalho.
Trabalho 4: Modelador geométrico com interseções de curvas e criação explícita de regiões.
Trabalho 5: Geração de malhas.
Trabalho 6: Visualização 3D.
Escopo e Programa
Introdução a conceitos e algoritmos de Computação Gráfica para alunos que pretendem desenvolver e customizar software técnico-científico.
Cronograma das aulas
Assunto |
Trabalho (aplicação) |
|||
1 |
08/mar |
6ª f |
Apresentação do ambiente de desenvolvimento – Python, Visual Studio
Code e Qt. Desenvolvimento de programas simples com o ambiente: hello world e soma de dois números. Introdução a Computação Gráfica para Engenharia. |
|
2 |
15/mar |
6ª f |
Desenvolvimento de uma calculadora RPN (console) em Python. Introdução a Programação Orientada a Objetos. Modelagem Orientada a Objetos da calculadora RPN. |
Trabalho 1: Calculadora RPN GUI com Qt |
|
22/mar |
6ª f |
AULA CANCELADA (RECEIO TEMPORAL NA CIDADE) |
|
|
29/mar |
6ª f |
FERIADO SEMANA SANTA |
|
3 |
05/abr |
6ª f |
Visualização bidimensional com OpenGL. Programa gráfico simples com Qt
e OpenGL. Transformações geométricas 2D. Transformação Window-Viewport. |
Trabalho 2: Visualização bidimensional com Qt e OpenGL |
4 |
12/abr |
6ª f |
Tratamento de cor. Padrão/biblioteca gráfica OpenGL. Programação em um
ambiente gráfico interativo dirigido por eventos. Paradigma de signals & slots
do Qt. |
|
5 |
19/abr |
6ª f |
Eventos de mouse em canvas. |
|
6 |
26/abr |
6ª f |
Representações digitais de curvas |
Trabalho 3: Coleta interativa de curvas |
7 |
03/mai |
6ª f |
Introdução à Geometria Computacional. Tesselagem de regiões
bidimensionais. |
Trabalho 4: Modelador geométrico com interseções de curvas e criação
explícita de regiões |
8 |
10/mai |
6ª f |
Introdução à Geometria Computacional. Algoritmos de interseção de segmentos
de reta. Teste de proximidade e inclusão de pontos em regiões. |
|
9 |
17/mai |
6ª f |
Geração de malhas de elementos finitos: algoritmos de mapeamento,
algoritmos de avanço de fronteiras e algoritmos de triangulação Delaunay. |
Trabalho 5: Geração de malhas |
10 |
24/mai |
6ª f |
Transformações geométricas para visualização 3D e modelo de câmera. |
|
|
31/mai |
6ª f |
RECESSO DE CORPUS CHRISTI |
|
11 |
07/jun |
6ª f |
Transformações geométricas para controle de visualização 3D. |
Trabalho 6: Visualização 3D |
12 |
14/jun |
6ª f |
Modelagem de sólidos manifold e de subdivisões planares. Estruturas de
dados topológicas manifold. Estrutura de dados Half-edge. |
|
|
|
|
Aulas subsequentes dedicadas aos projetos finais |
|
Critério de aprovação
Grau Final (GF) é obtido pela média aritmética dos trabalhos (todos com peso igual).
Se GF ≥ 6,0, o aluno será considerado aprovado.
Caso contrário o aluno estará reprovado.
Bibliografia
Python Tutorials: https://www.tutorialsteacher.com/python.
Amanda Brandão - Canal no YouTube - Python para iniciantes: https://youtube.com/playlist?list=PL25cWjt4YLO3v3UavjkrgAK-jnPjDSBCD.
Allen Downey, Pense em Python, Novatec, 2016.
Nilo Ney Coutinho Menezes, Introdução à Programação com Python, Novatec, 2014.
David Ascher e Mark Lutz, Aprendendo Python, Bookman, 2007.
Vittorio Lora. Python for Civil and Structural Engineers: https://python4civil.weebly.com, acessado em 23/junho/2022.
Waldemar Celes, Renato Cerqueira e José Lucas Rangel, Introdução a Estrutura de Dados – Com técnicas de programação em C, 2ª edição, Editora GEN LTC, 2022.
Jonas de Miranda Gomes e Luiz Velho, Computação Gráfica, Volume 1, Série de Computação e Matemática, IMPA, 1998.
Rogers, D.F., Adams, J.A.; Mathematical Elements for Computer Graphics, Second Edition, McGraw-Hill International Editions, Computer Series, New York, 1990.
Rogers, D.F.; Procedural Elements for Computer Graphics, McGraw-Hill International Editions, Computer Series, New York, 1985.
Foley, J.D., van Dam, A., Feiner, S., Hughes, J.; Computer Graphics: Principles and Practice, Second Edition in C, Addison-Wesley, 1995.
Arlindo Cardarett Vianna, Computação Gráfica, Tecgraf/PUC-Rio, Apostila, Ago. 1996.
Marcos Chataignier de Arruda, Modelagem Geométrica Não-manifold, PUC-Rio - Departamento de Engenharia Civil, Apêndice da Dissertação de Mestrado: Operações booleanas com sólidos compostos representados por fronteira, Jan. 2005.
Danielle Duque Estrada Pacheco, Estruturas de Dados Topológicas para Modelagem Geométrica Bidimensional de Problemas de Engenharia, Projeto Final de Graduação, Universidade Federal Fluminense - Departamento de Engenharia Civil, 2011.
Sistema de interface Qt:
Qt documentation.
OpenGL Programming Guide, Addison-Wesley Publishing Company, 1996.
OpenGL Conceitos Básicos, por Waldemar Celes.
Última atualização:22/abril/2024 por Luiz Fernando Martha