Desenvolvimento de filmes sobre fenômenos da física, química

Propaganda
DESENVOLVIMENTO DE FILMES SOBRE FENÔ MENOS DA FÍSICA, QUÍMICA
E MATEMÁTICA BASEADO EM UM VISUALIZADOR 3D
Lú cio Cézar S. Rebouças (IC) a, José Silvério E. Germano b
a
Divisã o de Ciência da Computaçã o, ITA, CTA, 12228-900, Sã o José dos Campos, SP, Brasil
b
IEFF, Departamento de Física, ITA, CTA, 12228-900, Sã o José dos Campos, SP, Brasil
Neste trabalho implementamos uma nova versã o do programa RhindGL, um visualizador de
fenômenos físicos feito em C++ para Windows 95/98 criado em uma iniciaç ã o científica anterior,
acrescentando-lhe novas funcionalidades, tais como a visualizaç ã o de molé culas químicas em 3
dimensõ es, o plot de funç õ es da forma z = f(x, y) e a criaç ã o de arquivos em formato de vídeo a partir
da captura de telas das possíveis simulaç õ es.
The goal of this work is a implementation of a new version of RhindGL, a physical phenomena
software vizualization in C++ for Windows 95/98 created in a previous scientific iniciation,
increasing it new functionalities, like 3 dimensional chemical molecules visualization, vizualization of
z = f(x, y) mathematical functions and the possibility of construction of files in video format using
screens captured from the simulations in RhindGL.
Keywords: OpenGL; GLUT; MFC; simulaç ã o 3D; RhindGL; PDB; AVI
1. INTRODUÇ Ã O
Com o rá pido crescimento que a informá tica tem tido nos ú ltimos anos, uma á rea em especial,
denominada computaçã o grá fica, tem se tornado uma grande aliada em vá rios ramos do conhecimento.
Além das aplicações convencionais em á reas da engenharia, tais como: construçã o de protótipos de
automóveis sofisticados, visualizaçã o do interior de ambientes antes de serem construídos,
simuladores de aviões, temos também importantíssimas aplicações na medicina, como por exemplo:
tomografia computadorizada, ultra-sonografias que constróem imagens em 3 dimensões com alto grau
de detalhamento a ponto de se poder visualizar o rosto de uma criança antes do seu nascimento ....
Com a popularizaçã o dos computadores pessoais, desenvolveu-se também um grande
segmento da computaçã o grá fica, que sã o os excelentes jogos em 3D que existem hoje em dia para
PC's. Toda essa tecnologia de software que foi desenvolvida para a criaçã o dos jogos, foi trazida de
aplicações em simuladores militares que tiveram grande expansã o no final da década de 80.
Uma outra importante vertente da computaçã o grá fica, que tem chamado a atençã o nos
ú ltimos anos, é o segmento da educaçã o denominado ensino a distancia. Com a crescente rapidez e
confiabilidade das conexões via Internet, já é possível se pensar hoje em dia na criaçã o de ambientes
virtuais onde se pode disponibilizar cursos online dos mais variados assuntos. Dentro dessa filosofia, o
departamento de física do ITA tem um projeto de ensinar física bá sica utilizando recursos de
informá tica, tanto dentro do ambiente da sala de aula bem como pela Internet. Dessa forma, a criaçã o
de simulações de fenômenos físicos, de preferência em 3D é de fundamental importância para dar
suporte a projetos ligados ao ensino da física. Uma das formas mais eficientes de se disponibilizar
essas simulações é através de um ambiente virtual de fá cil interatividade com o usuá rio, com a
possibilidade de poder salvar suas animações em formato de vídeo, para possível reproduçã o em
outros computadores ou na Internet.
Em uma iniciaçã o científica anterior, foi primeiro desenvolvido um ambiente virtual (chamado
RhindGL) onde se podia observar animações em 3D dos fenômenos físicos estudados, com a
possibilidade do usuá rio ter um alto grau de interatividade com o software a fim de facilitar o processo
de visualizaçã o.
A versã o 2.0 do RhindGL que foi desenvolvida nesta iniciaçã o científica, teve como objetivo a
adiçã o de novas funcionalidades à versã o anterior. Dentre essas novidades podemos citar: inclusã o da
possibilidade de se estudar funções em 3D que sã o fundamentais no estudo da matemá tica, animações
de moléculas químicas em 3D como ferramenta no auxílio no estudo da química e a possibilidade de
salvar qualquer dessas animações em formato de vídeo.
2. A VERSÃ O RHINDGL 1.1
A versã o 1.1 do visualizador RhindGL foi feita para o ambiente Windows em C++, utilizandose OpenGL[0] (Open Graphics Library), que é um pacote de funções para a construçã o de aplicativos
interativos em 3 dimensões, compatível às linguagens C e C++. Devido a OpenGL nã o possuir a parte
de interface com o usuá rio, utilizamos o compilador Microsoft Visual C++ que possui as facilidades
da Microsoft Foundation Class Library (mais conhecido como MFC)[1] para interaçã o com o usuá rio.
A primeira simulaçã o escolhida para ser implementada em RhindGL 1.1 foi a simulaçã o de
interferência de ondas circulares. Essa simulaçã o possui a possibilidade de termos a interferência de
até 3 ondas, onde cada uma delas pode possuir características diferentes. Para ficar mais fá cil a
visualizaçã o das cristas e dos vales da onda resultante, colocamos uma tonalidade de cores, que vã o do
azul ao vermelho, passando pelo verde (ver figura 1).
Figura 1: RhindGL 1.1 com a simulaçã o de uma onda circular tridimensional
Com o auxílio do mouse, podemos rodar o objeto enquanto a animaçã o está acontecendo,
podendo também usar efeitos de zoom, tanto através do teclado quanto através de ícones na barra de
ferramentas.
Podemos também salvar os parâmetros de uma dada simulaçã o em um arquivo de simulaçã o
do tipo *.rhi para que esta simulaçã o possa ser novamente carregada pelo programa.
3. A VERSÃ O RHINDGL 2.0
Pensamos em adicionar novas funcionalidades à versã o 1.1 de RhindGL. As funcionalidades
escolhidas foram:
· Construçã o de moléculas químicas;
· Visualizaçã o de funções matemá ticas da forma z = f(x, y); e
· Criaçã o de arquivos em formato de vídeo a partir da captura de imagens das simulações.
Utilizando os ícones da barra de tarefas na seqüência com que eles sã o habilitados, conseguimos
gerar um arquivo AVI. Saiba que:
·
ISC (Init Screen Capture): inicia a captura de telas para a formaçã o do arquivo AVI com uma
dada freqüência e uma dada qualidade.
· SSC (Stop Screen Capture): finaliza a captura de telas para a formaçã o do arquivo AVI.
· AVI: Cria o arquivo AVI em um diretório determinado pelo usuá rio a partir das telas
capturadas anteriormente.
Estes ícones sã o habilitados na barra de ferramentas conforme a demanda. A barra de
ferramentas, com as novas funcionalidades, é mostrada a seguir:
Figura 2: A barra de ferramentas da versã o 2.0 de RhindGL
·
·
Assim, a versã o 2.0 de RhindGL tem a capacidade de salvar dois tipos de arquivo diferentes:
Arquivos de simulações (*.rhi) que guarda os parâmetros de cada simulaçã o; e
Arquivos em formato de vídeo (*.avi).
4. CONSTRUÇ Ã O DE MOLÉ CULAS QUÍMICAS
Através de buscas na internet sobre a existência de visualizadores específicos para moléculas
químicas em 3 dimensões, encontramos vá rios ambientes de construçã o de moléculas químicas foram
encontrados e entre eles havia vá rios tipos de arquivos que guardavam as moléculas, dentre eles havia
um tipo de arquivo muito interessante: o tipo PDB [2].
PDB (Protein Data Bank) é um formato de arquivo onde estruturas de macromoléculas
biológicas sã o descritas de maneira tridimensional. Muitas dessas macromoléculas possuem estruturas
que foram determinadas experimentalmente. Esse formato de arquivo serve uma grande comunidade
de pesquisadores e estudantes. Um exemplo: a molécula de metano.
ATOM 1 C1 xxx 1 -0.000 0.000 -0.000
ATOM 2 H2 xxx 1 -0.531 -0.164 0.964
ATOM 3 H3 xxx 1
0.713 0.848 0.110
ATOM 4 H4 xxx 1
0.559 -0.922 -0.277
ATOM 5 H5 xxx 1 -0.740 0.238 -0.796
TER
CONECT 1 2 3 4 5
CONECT 2 1
CONECT 3 1
CONECT 4 1
CONECT 5 1
END
Nesta busca, encontramos também um programa[3] que convertia arquivos PDB em dois
arquivos em C com códigos em OpenGL. Como o nosso projeto foi feito em C++, tivemos que
adequar esses códigos gerados de C para C++ e incluímos no projeto da nova versã o de RhindGL.
Feitas as adequações, a versã o 2.0 de RhindGL conta com 4 moléculas químicas para
visualizaçã o: uma molécula de metano (ver figura 2a), uma de ciclohexano (ver figura 2b), uma de
ATP (Adenosina Tri-Fosfato) (ver figura 3a) e um trecho da estrutura cristalina de um diamante (ver
figura 3b).
5. A VISUALIZAÇ Ã O DE FUNÇ Õ ES
A partir do término da implementaçã o da animaçã o de interferência de ondas em um plano,
vimos uma nova linha de açã o que poderia ser seguida para o crescimento do projeto do visualizador:
a visualizaçã o de funções do tipo z = f(x, y), onde x, y e z sã o referencias ao sistema de coordenadas
retangulares (ver figuras 4 e 5).
Percebemos que a classe utilizada para criarmos a animaçã o de interferência de ondas
circulares já existente no visualizador, a classe CGLWave, poderia ser reutilizada para a visualizaçã o
das funções do tipo z = f(x, y), em coordenadas retangulares, pois o que muda é somente a equaçã o a
ser plotada. Esta classe desenha uma grade de polígonos retangular no espaço e centrada na origem,
onde cada vértice de um polígono possui uma tripla (x, y, z = f(x, y)). O par (x, y) da a posiçã o da
projeçã o desse vértice no plano xy e z nos dá a distância do vértice a essa sua projeçã o.
(a)
(b)
Figura 2: (a) Molécula de metano e (b) molécula de cicloHexano
(a)
(b)
Figura 3: (a) Molécula de Adenosina Tri-Fosfato (ATP) e (b) estrutura cristalina de um diamante.
(a)
(b)
Figura 4: Funçã o f(x, y) = x*sin(y)+y*sin(x) como: (a) saída do visualizador e (b) saída no Maple.
(a)
(b)
Figura 5: Funçã o f(x, y) = sin(x) + cos(y) como: (a) saída do visualizador e (b) saída no Maple.
6. ARQUIVOS EM FORMATO DE VÍDEO
O formato AVI[4] (Á udio Vídeo Interleaved) é um formato de multimídia criado pela
Microsoft. Em um arquivo AVI, os elementos de vídeo sã o guardados alternadamente no arquivo, daí
o nome interleaved.
Na pesquisa sobre a criaçã o de arquivos AVI, encontramos um programa, com o código fonte
livre[5], que tem como entrada uma seqüência de arquivos BMP onde a ordem de inserçã o desses
arquivos em uma fila determina a ordem com que as respectivas imagens serã o colocadas no arquivo
AVI.
Dividimos a criaçã o do arquivo AVI em duas partes:
· A captura das imagens da simulaçã o; e
· A criaçã o do arquivo AVI propriamente dito.
6.1 A Captura de imagens
Para que tenhamos a impressã o de animaçã o no futuro arquivo em formato de vídeo, devemos
capturar as telas a uma dada freqüência. Para tal, utilizamos o conceito de threads[6] para que a captura
das telas possa ser feita enquanto a simulaçã o esteja ocorrendo.
As telas capturadas sã o convertidas em arquivos BMP. Os arquivos BMP gerados na má quina
do usuá rio serã o deletados após o término da criaçã o do arquivo AVI correspondente.
6.2 A Criação do arquivo em formato de vídeo
Para a criaçã o do arquivo AVI, criamos uma thread assim como foi feito para a captura das
imagens. Isso serviu para garantir que as animações iriam continuar sendo mostradas sem falhas na
tela. Esta thread coloca os arquivos BMP dentro de um streaming AVI a uma dada freqüência definida
pelo usuá rio do programa e como foi mencionado anteriormente, no final da criaçã o do arquivo AVI,
os arquivos BMP’s sã o deletados.
7. CONCLUSÕ ES
Como produto final desta iniciaçã o científica criamos um visualizador de fenômenos físicos
em 3 dimensões, de funções matemá ticas e de moléculas químicas. O usuá rio deste programa pode
escolher 3 tipos diferentes de simulaçã o:
· interferência de ondas circulares;
· visualizaçã o de moléculas químicas; e
· visualizaçã o de funções da forma z = f(x, y).
Na simulaçã o de interferência de ondas circulares, o usuá rio pode entrar com os parâmetros da
simulaçã o. Já nos outros dois casos, o usuá rio pode escolher uma molécula química ou uma funçã o
para ser visualizada mas nã o pode modificar determinados parâmetros além da posiçã o de câmera, tais
como, cores dos á tomos no caso da simulaçã o de moléculas químicas e .
O usuá rio tem a possibilidade de criar arquivos de simulaçã o (do tipo *.rhi) salvando os
parâmetros de cada simulaçã o e arquivos em formato de vídeo (*.avi) gerados a partir da animaçã o das
simulações existentes no programa.
Como sugestões para continuaçã o deste trabalho, podemos citar:
· O aumento da quantidade de simulações de fenômenos físicos, moléculas químicas e
funções em 3 dimensões;
· A diminuiçã o do tamanho dos arquivos em formato de vídeo escolhendo outro
formato de compressã o, como por exemplo, MPEG;
· A implementaçã o da escala numérica das funções plotadas;
· Transformar o fundo das simulações transparentes, ou seja: fazer o fundo cinza das
figuras acima ficarem transparentes quando for implementada uma funçã o print no visualizador.
AGRADECIMENTOS
Agradecemos o apoio do PIBIC-CNPQ pelo auxílio financeiro dado. Gostaríamos de
agradecer também ao Prof. José Silvério Edmundo Germano por ter acreditado que o trabalho poderia
ser feito, mesmo para uma pessoa que tinha pouco contato com programaçã o em geral. Gostaríamos de
agradecer também ao Prof. Fá bio Carneiro Mokarzel1 por ter dado todo o apoio técnico e sempre
disponível para debater e tirar dú vidas.
REFERÊ NCIAS BIBLIOGRÁFICAS
[0] OpenGL Tutorial: http://nehe.gamedev.net/
http://www.sgi.com/software/opengl/
[1] MFC Tutorial: Special Edition Using Visual C++
http://nps.vnet.ee/ftp/Docs/C/Using%20Visual%20C++%206/
[2] PDB User’s Guide:
http://www.rcsb.org/pdb/docs/format/pdbguide2.2/guide2.2_frame.html
[3] 3Dwin4: http://www.stmuc.com/thbaier/
[4] AVI File Creation: http://www.shrinkwrapvb.com/avihelp/avihelp.htm
[5] CAvi Source Code: http://www.programmersheaven.com/zone10/cat542/15375.htm
[6] Using Threads in C++: Special Edition Using Visual C++ - Chapter 27
1
O Prof. Fá bio Carneiro Mokarzel é Professor Doutor e atual Chefe do Depto. de Engenharia de Software da
Divisã o de Ciência da Computaçã o do ITA.
Download