Upload
fabio-dos-santos
View
367
Download
6
Embed Size (px)
DESCRIPTION
Pré Projeto de pesquisa envolvendo computação grafica, funções matematicas e programação funcional.
Citation preview
Os paradigmas de programação funcional e a matemática no contexto da
computação gráfica
Contracapa
Autores: Fabio dos Santos
Orientador: Profa. MS. Claudia Haddad
Santos
2011
2
Os paradigmas de programação funcional e a matemática no contexto da
computação gráfica
Pré-Projeto de Pesquisa apresentado ao
Curso de Análise e Desenvolvimento de
Sistemas da FACULDADE DE TECNOLOGIA
RUBENS LARA como um dos requisitos
obrigatórios para aprovação na disciplina
Metodologia da Pesquisa Aplicada e
Tecnológica.
Santos
2011
3
Sumário 1. Introdução .......................................................................................................................... 4
1.1 Contextualização ...................................................................................................................... 4
1.2 Problema.................................................................................................................................. 6
1.3 Problematização....................................................................................................................... 6
2. Objetivos ............................................................................................................................ 7
2.1 Objetivo Geral .......................................................................................................................... 7
2.2 Objetivos Específicos ................................................................................................................ 7
3. Relevância ......................................................................................................................... 8
3.1 Justificativa .............................................................................................................................. 8
3.2 Motivação ................................................................................................................................ 8
4. Abordagem Metodológica .................................................................................................. 9
4.1 Revisão Bibliográfica................................................................................................................. 9
4.2 Pesquisa Exploratória ............................................................................................................... 9
5. Cronograma ..................................................................................................................... 10
6. Referencias ...................................................................................................................... 11
4
1. Introdução
1.1 Contextualização
A história da arte remonta mais ou menos 40.000 anos a.C. com as pinturas rupestres. O
homem desde cedo tinha a arte correndo em suas veias, mas até então não havia
implementado esta na informática. O primeiro desenho a aparecer numa máquina eletrônica
foi em 1950, feito pelo artista e matemático Ben Laposky (GUIA DO HARDWARE, 2011).
Ele chamou-o de 'oscillons' e 'electronic abstractions'1.
Ainda segundo o site, em 1960 nasce o termo Computação Gráfica, forjado por William
Fetter para descrever o que ele fazia na Boeing. Em 1964 ele fez o primeiro modelo de
corpo humano no computador, que foi usado em um comercial de 30 segundos. O modelo
era formado por um corpo articulado o que possibilitou a sua animação. Nascia assim a
parceria computador-mídia de massa.
A animação por computador só foi possível com o desenvolvimento de tecnologias que
permitiram o trabalho com gráficos de forma interativa. Tais tecnologias começaram a
ganhar dimensão e complexidade na década de 1970 (LUCENA, 2005).
Ainda segundo o autor, a interatividade entre usuário e computador foi a característica
responsável pelo sucesso da informática. Além disso, a interatividade deveria se dar da
forma muito mais intuitiva possível e, para isso, a melhor escolha era o uso de imagens. Os
avanços em termos de capacidade de processamento e memória ocorridos na década de
1970 tornaram possível a interatividade de forma gráfica.
Define-se computação gráfica como o conjunto de algoritmos, técnicas e metodologias para
tratamento e representação gráfica de informações através da criação, armazenamento e
manipulação de figuras, utilizando-se computadores e dispositivos periféricos gráficos
(CUNHA, ET al. 1987).
Sabe-se que um gráfico pode ajudar a compreensão de uma relação entre grandezas.
Aprende-se cedo a fazer e ler gráficos conforme instrução formal, e obtém os benefícios
quase continuamente na vida diária das pessoas (HETEN, 2006). Ainda segundo esse
1 “oscilações e abstrações eletrônicas”
5
mesmo autor, o gráfico de uma função y = f(x), revela aspectos da relação dificilmente
discerníveis via análise de formulas ou através de valores numéricos.
Neste contexto, a matemática pode parecer um montante de números aglomerados em
equações que se destinam apenas à construção de objetos concretos, mas isso não é
verdade (AZEVEDO, 1999). Segundo Steve Hawking (apud AZEVEDO, 1999) em seu livro
The Large Scale Structure of Space-Time2, “a matemática é a linguagem do homem com a
natureza” e é exatamente aí que entram os computadores.
Em geral, os softwares de computação gráfica são diferenciados dos aplicativos pelo seu
grande volume de desenvolvimentos matemáticos apurados que desenvolve implicitamente
(EMERSON, 2005).
Segundo o professor Edilberto Silva, (2011) as linguagens de programação em geral se
dividem em 4 tipos: as imperativas, lógicas, orientadas a objeto e as funcionais. Este último,
o paradigma funcional, trata a computação como uma avaliação de funções matemáticas.
Programar em uma linguagem funcional consiste em construir definições e usar o
computador para avaliar expressões. O papel principal do programador consiste em
construir uma função para resolver um problema dado. Essa função que pode envolver um
número subsidiário de funções obedecendo a princípios matemáticos. O principal papel do
computador é agir como um avaliador ou calculador: é seu trabalho avaliar as expressões e
imprimir os resultados. Nesse aspecto o computador age como uma simples calculadora de
bolso. (TUTO MANIA, 2006).
O modelo de computação proposto por Church em cálculo lambda3, a chamada
definibilidade lambda, vem a ser a base do paradigma de programação funcional. Isto ocorre
porque os programas funcionais são mais próximos de especificações de problemas
computacionais do que programas imperativos, (BARENDREGT, 1984).
Segundo o site da ferramenta (BLENDER, 2011) o software de animação e modelagem
gráfica Blender 3D, foi escrito inicialmente em C que é uma linguagem imperativa, e
atualmente está escrito em C, C++ que é orientada a objeto, mas, algumas partes,
principalmente scripts embutidos, são escritos em Python que é uma linguagem funcional.
Ainda segundo o site, podemos criar aplicações em arquitetura, design industrial,
engenharia, animação, produção de vídeo, e desenvolvimento de jogos. Esta característica
pode ser ampliada e agilizada com o uso de scripts em Python.
2 “A estrutura em grande escala do espaço-tempo” 3 O lambda cálculo pode ser visto como uma linguagem de programação abstrata em que funções podem ser combinadas para formar outras funções, de uma forma pura.
6
1.2 Problema
A maioria dos softwares gráficos costuma ter acesso as suas funcionalidades por meio do
mouse e teclado, porém, muitas vezes quando se está fazendo uma modelagem um pouco
mais complicada, a precisão é necessária. Nessas horas o conhecimento matemático para
poder se utilizar dos scripts é fundamental (HUDAK, 1988).
Na figura 4 o exemplo de duas modelações, uma simples e outra mais complexa.
Contudo, os princípios básicos dos gráficos e da geometria usados para criar os gráficos
mais simples rendem também técnicas científicas úteis de visualização. Algumas técnicas
parecem naturais e óbvias; outras, mais sofisticadas, são de difícil compreensão, pois
chegam a usar a matemática e a geometria sob sutis metáforas (HETEM, 2006).
Os scripts matemáticos proporcionam um maior poder de abstração, ajudando na criação de
imagens complexas e em muitos casos não imaginadas. Mesmo as imagens geradas a
partir de equações podem ser consideradas arte, se essas equações forem fruto da
criatividade e da capacidade do descobridor que manifesta sua habilidade e originalidade
inventiva (AZEVEDO, 1999).
Basicamente, explorar esses meios e extremamente eficazes de representar e de
reconhecer informações sobre relacionamentos de funções é a principal finalidade deste
trabalho.
1.3 Problematização
Mas, de que forma um usuário pode usufruir desses recursos uma vez que estes estão
implícitos na maioria dos softwares de modelação gráfica?
A matemática, igualmente implícita nas linguagens de programação funcional, pode, em
forma de scripts, auxiliar na melhoria e agilidade de gráficos mais complexos?
7
2. Objetivos
2.1 Objetivo Geral
Esta pesquisa abordará o uso de linguagens de programação funcional como forma de
aprimorar o uso dos softwares de computação gráfica e assim agilizar e melhorar as
modelagens e animações.
O uso de conceitos matemáticos também será necessário para um maior entendimento da
pesquisa.
Será desenvolvida uma demonstração de uma modelação ou animação utilizando um
software específico para este fim, mostrando as vantagens da utilização dos conceitos já
contextualizados na pesquisa.
Para tornar a trabalho mais fácil serão utilizados softwares livres tanto para programação
quanto para modelação.
2.2 Objetivos Específicos
Para a Revisão Bibliográfica:
Identificar e estudar os conceitos matemáticos envolvidos desde o aparecimento das
perspectivas geométricas até o seu uso na computação.
Esmiuçar a linguagem de programação funcional e o software de modelação e
animação gráfica a ser utilizado.
Para um melhor entendimento dos conceitos matemáticos:
Será utilizado o software gratuito de plotagem de gráficos o Winplot.
Para a pesquisa exploratória:
Será utilizada a linguagem Python, pois se trata de um paradigma funcional e
também é livre.
Será utilizado o software de modelação e animação gráfica Blender 3D, pois usa a
linguagem Python para seus scripts e também é livre.
8
3. Relevância
3.1 Justificativa
Cada vez mais a computação gráfica está presente nos mais diversos ramos de atividade
sejam eles comercial, tecnológico, arquitetônico, escolar e até hospitalar, nota-se que é
comum médicos analisando órgãos do corpo humano em animação 3D tornando mais
simples o trabalho de entender o já complexo interior do corpo humano. Sendo assim, os
avanços na computação científica tendem a aumentar a complexidade de modelos e de
simulações matemáticas. Isso resulta em simulações mais próximas da realidade, o que
realça a possibilidade de adquirir conhecimentos novos e de maior controle. A imensa
quantidade de valores numéricos que estão sendo produzidos e coletados contém muita
informação.
A animação dá uma dimensão adicional muito importante da visualização técnica/cientifica.
A mente pode recolher a informação de animações que seria virtualmente impossível de
obter através da observação de imagens independentes.
3.2 Motivação
A motivação na realização da pesquisa vem da percepção do problema de como
transformar toda essa informação em algo útil para os profissionais que utilizam essa
ferramenta de forma que eles utilizem eficazmente potencialidades criativas e analíticas
inerentemente humanas.
Ao permitir que o profissional coopere com o computador, aumentam-se as possibilidades
para a inspiração, a introspecção e a compreensão. Com a contribuição de muitas áreas,
mesmo as realmente antigas, como a geometria, é possível gerar novas ferramentas
poderosas que permitem uma maior cooperação com o computador.
9
4. Abordagem Metodológica
4.1 Revisão Bibliográfica
Será feita uma extensa revisão bibliográfica sobre os conceitos matemáticos a fim de
entender de que forma as funções matemáticas podem gerar as primitivas geométricas.
Após isso, será feita uma revisão bibliográfica sobre a linguagem de programação a ser
abordada na pesquisa.
Uma breve leitura sobre o software de modelação gráfica Blender 3D será necessária para
absorver os conceitos básicos, pois por ser um tipo de programa mais pratico do que
teórico, a maioria das funções se aprende na prática.
4.2 Pesquisa Exploratória
Após as revisões, para que haja uma maior solidificação dos conceitos matemáticos, será
usado o software de plotagem funcional chamado Winplot.
Será feita uma pesquisa de campo com profissionais da área matemática e de programação
com o intuito de dar maior embasamento à pesquisa.
Alem disso, para que se possa criar os scripts necessários para a pesquisa, haverá uma
abordagem prática sobre a linguagem Python.
Feito isso, haverá também pesquisa pratica com o software de modelagem gráfica Blender
3D para fundamentar os conceitos.
Em seguida, será feita uma miscigenação de todos os conhecimentos obtidos para a criação
dos scripts matemáticos e dos módulos de funções para o Blender.
De posse desse material, será criado um trabalho modelação complexo e outro mais
simples para comparação dos conceitos.
Por fim, será produzido o material para a apresentação.
10
5. Cronograma
2012 2013
Ago Set Out Nov Dez Jan Fev Mar Abr Mai Jun
Escolha do Orientador
Entrega Pré-Projeto
Revisão Bibliográfica
Entrega Relação Qualificação
Pesquisa Campo
Pesquisa Exploratória
Elaboração Demonstração
Finalização e Conclusão
Entrega Do TCC
Apresentação Banca
11
6. Referencias
AZEVEDO, Eduardo “Teoria da Computação Gráfica”, Editora: Campus, 1999. BARENDREGT, H. P. The “Lambda Calculus: its Syntax and Semantics”. North-Holland. Amsterdam, 1984. BATISTA, Emerson de Oliveira “Sistemas de Informação”Editora Saraiva, 2005 “ BLENDER, “Architecture”, <2003>, (http://www.blender.org/development/architecture/ (Último acesso em 29/05/2011) CUNHA, Gilberto José da ; BERALDO, Antonio Tadeu Mendes; BARREIROS Fernando Pierry ; BATTAIOLA André Luiz, “Computação Gráfica e suas aplicações em CAD”,Atlas, 1987 GUIA DO HARDWARE, “Computação Gráfica para Todos”, Disponível em http://www.hardware.com.br/artigos/computacao-grafica-iniciantes/ Ultimo acesso em 22/05/2011 HETEM JR, Annibal “Computação Gráfica” ,LTC, 2006 HUDAK, Paul “Conception, evolution, and application of functional programming languages. Disponível em. http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_funcional#cite_note-0 MELO, A Silva, F. “Princípios de Linguagem de Programação”, Edgard Blücher,2003 SILVA, Edilberto. “Criar Web”. Disponível em <http://www.edilms.eti.br/uploads/file/pp/PP-aula-01-apresentacao.pdf> .Ultimo acesso em 21/05/2011. TUTO MANIA, “Paradigma de Programação Funcional”, 01/06/06, 09:59 hs.<Disponível em http://www.tutomania.com.br/tutorial/paradigma-de-programacao-funcional>Acessado em24/05/2011).