Um estudo de Computação Gráfica 2D: Modelagem geométrica

Um estudo de Computação Gráfica 2D: Modelagem geométrica

(Parte 1 de 6)

UM ESTUDO DE COMPUTAÇÃO GRÁFICA 2D: MODELAGEM GEOMÉTRICA

NOVEMBRO 2008

UM ESTUDO DE COMPUTAÇÃO GRÁFICA 2D: MODELAGEM GEOMÉTRICA

Trabalho de conclusão de curso apresentado por Marcello Marinho Ribeiro à Universidade Católica de Goiás como requisito parcial para obtenção do título de bacharel em Engenharia da Computação aprovado em 27/1/2008 pela Banca Examinadora: Professor Marco Antonio Figueiredo Menezes, Dr. UCG – Orientador Professor Nilson Cardoso Amaral, Dr. UCG Professor Pedro Araújo Valle, MsC. UCG

UM ESTUDO DE COMPUTAÇÃO GRÁFICA 2D: MODELAGEM GEOMÉTRICA

Trabalho de conclusão de curso apresentado por Marcello Marinho Ribeiro à

Universidade Católica de Goiás como requisito parcial para obtenção do título de bacharel em Engenharia da Computação .

Prof. Dr. Marco Antonio F. Menezes, DrProf. Jeová Martins Ribeiro, Esp.

Orientador Coordenador de Projeto Final de Curso iv

Inicialmente gostaria de agradecer aos meus pais e meu irmão por tornarem possível a realização deste sonho e estarem sempre ao meu lado.

Ao Prof. Dr. Marco Antonio F. Menezes, pela paciência durante o processo de orientação e pelo ensino não apenas dos conteúdos, mas sim de valores que eu nunca mais irei esquecer. Ao Prof. Cristian Patricio Novoa Bastos, pelos esclarecimentos.

Às famílias dos meus tios Mauro e Thales, por aturarem minhas manias e caprichos durante este trajeto. Vocês foram de fundamental importância. Outra tia importante é a tia Berenice, que me deu um apoio enorme.

Aos colegas que passaram pelo seminário de otimização, Jordana, Maiana, Luiz

Fernando, Maurício, Eduardo e Allan, que me proporcionaram grandes dias de discussões técnicas que me ajudaram muito para minha evolução como aluno e pessoa.

À minha namorada Maira Cristina de Souza Gomes que demonstra muito carinho, amor e afeto.

A todos que de certa forma contribuíram para a realização deste sonho. Muito obrigado mesmo.

Aos meus familiares.

À minha mãe Mary, pai Marcos e irmão Aymar pelo afeto e suporte. À minha namorada Maira pelo amor e carinho.

vi

“A display connected to a digital computer gives us a chance to gain familiarity with concepts not realizable in the physical world. It is a looking glass into a mathematical wonderland.” Ivan Sutherland vii

O objetivo deste trabalho é escrever a modelagem geométrica 2D com exceção de superfícies e fractais, do ponto de vista do paradigma dos quatro universos e da utilização de uma API gráfica OpenGL para a implementação da modelagem de objetos gráficos.

Palavras-Chave: Computação gráfica 2D, OpenGL, modelagem geométrica, paradigma dos quatro universos, objetos gráficos.

viii

The objective of this work is to write geometric modeling 2D with exceptions of surfaces and fractals, from the point of view of the paradigms of the four universes and the use of graphic API OpenGL to the implementation of graphics objects modeling.

Key-Words: Computer graphic 2D, OpenGL, geometric modeling, paradigm of four universes, graphics objects.

ix

LISTA DE FIGURASxi
LISTA DE TABELASxii
LISTA DE ABREVIATURAS E SIGLASxiii
1. INTRODUÇÃO1
2. PRELIMINARES EM ÁLGEBRA LINEAR3
2.1. Matrizes3
2.2. Espaços vetoriais5
2.3. Transformações lineares, afins e projetivas8
3. UMA INTRODUÇÃO À COMPUTAÇÃO GRÁFICA15
3.1. Cores15
3.2. Definições18
3.3. Objetos gráficos planares23
3.3.1. Hipóteses24
3.4. Paradigma dos quatro universos25
4. PRELIMINARES EM OPENGL27
4.1. Introdução27
4.2. Instalação da OpenGL28
4.2.1. Os arquivos necessários28
4.2.2. Configurando o ambiente de programação29
4.3. Nomes das funções e tipos de dados35
4.4. Desenhando com OpenGL37
4.5. Criação de janelas39
4.5.1. Funções de inicialização de janelas39
4.6. Interações com teclado e mouse43
4.6.1. Callback do teclado43
4.6.2. Callback do mouse43
4.7. Transformações geométricas47
5. MODELAGEM GEOMÉTRICA 2D51
5.1.1. Universo físico51
5.1.2. Universo matemático52
5.1.3. Universo de representação5
5.1.3.1. Representação CSG5
5.1.3.2. Hierarquias57
5.1.4. Universo de implementação61
6. CONCLUSÕES62

xi

Figura 1 – Transformação linear de escala9
Figura 2 – Transformação afim (linear) de translação12
Figura 3 - Transformação projetiva: espaço (a) e plano (b)14
Figura 4 - Percepção de cores16
Figura 5 - O olho humano18
Figura 6 - Imagem (monocromática)19
Figura 7 - Objeto gráfico: ponto vermelho20
Figura 8 - Objeto gráfico: circunferência e campos de vetores normal e tangente21
Figura 9 - Dados e processos da computação gráfica2
Figura 10 - Paradigma dos quatro universos25
Figura 1 - Tela inicial do Visual Studio 200529
Figura 12 - Iniciando um novo projeto30
Figura 13 - Inserindo o tipo, o nome e a localização do projeto30
Figura 14 - Opções do projeto - clique em Next para prosseguir31
Figura 15 - Opções de projeto - escolha as opções conforme a figura31
Figura 16 - Área de trabalho do projeto32
Figura 17 - Adicionando um arquivo de código fonte32
Figura 18 - Escolhendo o tipo, nome e localização do novo código fonte3
Figura 19 - Adicionando o nome das bibliotecas ao projeto34
Figura 20 - Primeira janela OpenGL42
Figura 21 - Desenho em janela GLUT46
Figura 2 – Interação do mouse46
Figura 23 - Aplicação de translação50
Figura 24 - Translação após 5 interações50
Figura 25 - Circunferência, triângulo e linha54
Figura 26 - Um exemplo de árvore CSG56

xii

Tabela 1 - Arquivos e pastas de instalação OpenGL28
Tabela 2 - Tipos de argumentos das funções OpenGL35
Tabela 3 - Tipo de dados OpenGL36
Tabela 4 - Primitivas gráficas da OpenGL37
Tabela 5 - Parâmetros da função glutInitDisplayMode(·)40
Tabela 6 - Valores do parâmetro int botao43

xiii

2D Duas Dimensões 3D Três Dimensões API Application Programming Interface ARB Architeture Review Board ASCII American Standard Code for Information Interchange CSG Constructive Solid Geometry GLU Graphic Library Utilities GLUT Graphic Library Utilities Toolbox OpenGL Open Graphic Library UCG Universidade Católica de Goiás VS Visual Studio 2005

A computação gráfica vem se tornando a cada dia uma ferramenta muito importante em áreas como, por exemplo, a Computação e a Matemática, visto que a necessidade de aplicações que geram e manipulam objetos gráficos e imagens são cada vez mais exigidas. Apesar da grande quantidade de material e aplicações existentes no mercado sobre computação gráfica, ainda existem algumas definições e resultados que não estão consolidados e abrem espaço para uma interpretação ambígua.

Inicialmente, a motivação para esse trabalho foi a construção de um jogo 2D (duas dimensões) , onde tínhamos uma idéia através da utilização de métodos de otimização linear. Todavia, esbarramos na dificuldade teórica e de implementação de algoritmos em computação gráfica, haja vista a dissonância entre a teoria e a prática na literatura. A partir daí, resolvemos escrever a modelagem geométrica 2D sobre certas hipóteses, em uma tentativa sucinta e clara do ponto de vista didático e acadêmico.

O objetivo deste trabalho é escrever a modelagem geométrica 2D com exceção de superfícies e fractais, do ponto de vista do paradigma dos quatro universos e da utilização de uma API (Application Programming Interface) gráfica OpenGL (Open Graphic Library) para a implementação de modelagem de objetos gráficos.

No capítulo 2, apresentamos alguns tópicos em álgebra linear necessários para o estudo da computação gráfica. Neste capítulo, contamos com a contribuição do Prof. Cristian Patricio Novoa Bastos.

No capítulo 3, introduzimos a computação gráfica, onde enunciamos as hipóteses deste trabalho, definimos objetos gráficos e apresentamos o paradigma dos quatro universos. Neste capítulo contamos com a valorosa correção (da primeira versão) e contribuição do Prof. Luiz Velho, a contribuição dos matemáticos Genésio Lima dos Reis e Cristian Patricio Novoa Bastos, e dos físicos Francisco Aparecido Pinto Osório e Celso José Viana Barbosa. É importante afirmar que este capítulo foi escrito pelo orientador Prof. Marco Antonio F. Menezes.

No capítulo 4, introduzimos a API gráfica OpenGL para programação de aplicações gráficas 2D. Aqui, configuramos um ambiente de programação para trabalharmos a OpenGL com a linguagem de programação C. No capítulo 5, estudamos a modelagem geométrica do ponto de vista do paradigma dos quatro universos apresentado no capítulo 3, e da utilização da API OpenGL, introduzida no capítulo anterior, para as nossas implementações. No capítulo 6, apresentamos as nossas considerações finais, enquanto que no capítulo 7 apresentamos as referências bibliográficas.

O objetivo deste capítulo é estudar alguns tópicos da disciplina álgebra linear do ponto de vista da computação gráfica. Dessa forma, estudaremos matrizes, espaços vetoriais e transformações lineares, afins e projetivas.

Neste capítulo, sugerimos os livros de Boldrini, Costa, Figueiredo e Weltz [4],

Gomes e Velho [10], Hoffman e Kunze [1] e Lima [12].

Para dar início aos nossos estudos de álgebra linear, definiremos algumas estruturas algébricas básicas para trabalharmos com a computação gráfica. Iniciaremos com o estudo de matrizes.

2.1 Matrizes

Uma matriz A é uma tabela com coeficientes reais dispostos em m-linhas e ncolunas, denotada por:

n n

Dizemos que uma matriz A, m x n e B, p x q são iguais, quando têm o mesmo número de linhas e colunas e ija= ijb, para i = 1, 2,..., m e j =1, 2,..., n. Dizemos que uma matriz A, m x n, é uma matriz quadrada quando m = n. Quando todos os elementos de uma matriz são iguais a 0, dizemos matriz nula. Quando temos uma matriz com uma única linha, dizemos que esta é uma matriz linha, já quando temos uma única coluna dizemos que esta é uma matriz coluna. Uma matriz linha também é designada por vetor linha e a matriz coluna pode ser dita vetor coluna (ou simplesmente vetor).

Seja A uma matriz quadrada. A diagonal principal de uma matriz quadrada ][ijaA=é a diagonal composta pelos elementos ijacom i = j. Uma matriz diagonal é uma matriz que possui todos os seus elementos fora da diagonal principal iguais a 0. Uma matriz identidade é uma matriz diagonal, cujos elementos da diagonal principal são iguais a 1. A matriz identidade será denotada pelo símbolo I.

Considere mi,...,2,1= e j=1,2,...n e sejam A e B duas matrizes, m x n. A operação de adição entre as matrizes A e B é dada por:

A operação de multiplicação de um escalar α por uma matriz A é dada por:

Ainda, a matriz transposta de uma matriz A, denotada por AT , é dada por:

Sejam uma matriz A, m x n, e uma matriz B, p x q, com n = p. A operação de multiplicação entre as matrizes A e B é dada por:

k klikil mibac 1

Considere A uma matriz quadrada. Dizemos que A é invertível, quando existir uma matriz A1− , denominada matriz inversa de A, tal que

(Parte 1 de 6)

Comentários