Monografia v1.0 - Sistema de Partículas
description
Transcript of Monografia v1.0 - Sistema de Partículas
-
UNIVERSIDADE FEDERAL DE MATO GROSSOCOORDENAO DE ENSINO DE GRADUAO EM
CINCIA DA COMPUTAO
ESTUDO E DESENVOLVIMENTO DE UM SISTEMA DE PARTCULAS APLICANDO A PROGRAMAO ORIENTADA A OBJETOS
RODRIGO VIEIRA CHAVES
CUIAB - MT2009
-
UNIVERSIDADE FEDERAL DE MATO GROSSOCOORDENAO DE ENSINO DE GRADUAO EM
CINCIA DA COMPUTAO
ESTUDO E DESENVOLVIMENTO DE UM SISTEMA DE PARTCULAS APLICANDO A PROGRAMAO ORIENTADA A OBJETOS
RODRIGO VIEIRA CHAVES
Orientador: Prof. Dr. Joo Paulo Igncio Ferreira Ribas
Co-Orientador: Prof. Dr. Arlenes Silvino da Silva
Monografia apresentada ao Curso de Cincia da
Computao da Universidade Federal de Mato
Grosso, para obteno do Ttulo de Bacharel em
Cincia da Computao.
CUIAB - MT2009
-
UNIVERSIDADE FEDERAL DE MATO GROSSOCOORDENAO DE ENSINO DE GRADUAO EM
CINCIA DA COMPUTAO
CERTIFICADO DE APROVAO
Ttulo: Estudo e Desenvolvimento de um Sistema de Partculas aplicando a programao orientada a objetos
Autor: Rodrigo Vieira Chaves
Aprovada em ___/___/______
Prof. Dr. Joo Paulo Igncio Ferreira RibasInstituto de Computao - UFMT
(Orientador)
Prof. Dr. Arlenes Silvino da SilvaInstituto de Computao - UFMT
(Co-Orientador)
Prof. Msc. Luciana Corria Lima de Faria BorgesInstituto de Computao - UFMT
Prof. Msc. Maurcio Fernando Lima PereiraInstituto de Computao - UFMT
-
DEDICATRIA
A Deus, pela oportunidade que me tem dado de viver a vida livremente.
minha famlia, por todo apoio dado no decorrer da minha existncia.
-
AGRADECIMENTOS
Ao Prof. Joo Paulo Ribas pela orientao que prestou na elaborao desse trabalho,
ao Prof. Arlenes pela correo e orientao nas partes em que exigido matemtica e ao Prof.
Valdenilson pela ajuda valiosa que me ofereceu sobre equaes diferenciais e o mtodo de
Runge-Kutta.
A todos os colegas que diretamente ou indiretamente me apoiaram.
meu pai que me sustentou todo o perodo em que estive na faculdade, sem o qual
essa monografia no viria a existir.
-
ndice de ilustraesFigura 1: Sistema de partculas com um nascedouro em forma de esfera, as partculas nascem aleatoriamente em posies que estejam dentro da esfera........................................................21Figura 2: Efeitos de letras queimando (acima), e vortex (abaixo)............................................23Figura 3: Efeito de gua utilizando um sistema de partculas...................................................23Figura 4: Imagens do filme animado Particle Dreams, acima uma tempestade de neve e abaixo uma cabea respirando..............................................................................................................23Figura 5: Partculas orbitando em volta de um ncleo (Acima), exploso (meio) e uma cachoeira (abaixo).....................................................................................................................23Figura 6: Coordenadas cartesianas, representa um espao tridimensional...............................25Figura 7: Uma partcula nas posies t = 0, t = 1/2 e t = 1.......................................................26Figura 8: Mtodo de Euler, estima o valor de yn+1 em funo de yn......................................30Figura 9: Mtodo de Runge-Kutta de 2 ordem, nota-se uma maior preciso comparada com o mtodo de Euler........................................................................................................................31Figura 10: Mtodo Runge-Kutta de 4 ordem...........................................................................32Figura 11: Arquitetura do sistema de partculas implementado nesse trabalho........................38Figura 12: Classe que representa uma partcula........................................................................40Figura 13: Classe que representa um sistema de partculas......................................................43Figura 14: Classe que representa um gerenciador de sistemas de partculas............................45Figura 15: Relao entre as trs classes principais do sistema.................................................46Figura 16: Funcionamento de um loop responsvel por manter um jogo ou uma animao rodando......................................................................................................................................48Figura 17: Loop atualizado, incluindo a atualizao do sistema de partculas implementado nesse trabalho............................................................................................................................49Figura 18: Partculas nascendo de um ponto no espao cartesiano..........................................51Figura 19: Partculas nascendo de um plano no espao cartesiano...........................................52Figura 20: Partculas nascendo de um disco no espao cartesiano...........................................53Figura 21: Partculas nascendo de um cubo no espao cartesiano............................................54Figura 22: As foras podem agir em cada eixo separadamente, sem depender um do outro....59Figura 23: Classe que representa as equaes diferenciais ordinrias de primeira ordem.......64Figura 24: Classe que representa o mtodo Runge-Kutta.........................................................64Figura 25: Loop atualizado, incluindo a parte de movimentao das partculas......................65Figura 26: Fora da gravidade atuando apenas do lado esquerdo da origem............................68Figura 27: Efeito de motion blur em uma foto..........................................................................69Figura 28: Sistema de partculas sem motion blur....................................................................70Figura 29: Sistema de partculas com motion blur....................................................................70Figura 30: Sistema de partculas renderizada utilizando texturas.............................................70Figura 31: Sistema de partculas renderizada sem usar texturas...............................................70Figura 32: Partculas renderizadas como bolhas de ar..............................................................71Figura 33: Partculas representando plos................................................................................71Figura 34: Sistema de partculas feito pelo autor, mostrando as partculas no espao 3D.......72Figura 35: Partculas sendo influenciadas pela gravidade no eixo X........................................73Figura 36: Partculas sendo atradas por uma fora oposta da gravidade no eixo Y.................74Figura 37: As partculas podem ser de qualquer de cor............................................................74Figura 38: Partculas nascendo dentro de um cubo...................................................................75Figura 39: Partculas ao longo do lado negativo do eixo x, sendo influenciadas pela gravidade....................................................................................................................................................75Figura 40: Foras disponveis no sistema.................................................................................76Figura 41: Interface de configurao da gravidade...................................................................77
-
Figura 42: Interface de configurao da resistncia do vento...................................................77Figura 43: Interface de configurao da lei de Hook no sistema..............................................78Figura 44: Interface de configurao da gravidade local..........................................................78Figura 45: Interface de configurao da velocidade inicial......................................................79Figura 46: Interface de configurao do ngulo, massa e tempo de vida das partculas..........80Figura 47: Interface para configurao da cor inicial das partculas........................................81Figura 48: Interface para a configurao da cor final das partculas........................................81Figura 49: Interface de configurao do tamanho das partculas..............................................81Figura 50: Interface para ligar ou desligar o canal alpha..........................................................82Figura 51: Interface para a configurao do nascedouro das partculas...................................82
-
ndice de EquaesMtodo de Euler........................................................................................................................30Fator k1 do mtodo de euler melhorado...................................................................................31Fator k2 do mtodo de euler melhorado...................................................................................31Mtodo de Euler melhorado......................................................................................................31Fator k1 do mtodo de Runge-Kutta de 4 ordem.....................................................................32Fator k2 do mtodo de Runge-Kutta de 4 ordem.....................................................................32Fator k3 do mtodo de Runge-Kutta de 4 ordem.....................................................................32Fator k4 do mtodo de Runge-Kutta de 4 ordem.....................................................................32Mtodo de Runge-Kutta de 4 ordem........................................................................................32O eixo x dado como um nmero aleatrio entre um valor inicial e um final.........................53O eixo z dado como um nmero aleatrio entre um valor inicial e um final.........................53Valor a ser usado para a obteno da raiz quadrada de um nmero aleatrio...........................54O eixo x do nascedouro em forma de disco..............................................................................54O eixo z do nascedouro em forma de disco..............................................................................54O eixo x do nascedouro em forma de cubo dado como um nmero aleatrio entre um valor inicial e um final.......................................................................................................................55O eixo y do nascedouro em forma de cubo dado como um nmero aleatrio entre um valor inicial e um final.......................................................................................................................55O eixo z do nascedouro em forma de cubo dado como um nmero aleatrio entre um valor inicial e um final.......................................................................................................................55Segunda lei de Newton.............................................................................................................59Segunda lei de Newton sobre o eixo x......................................................................................60Segunda lei de Newton sobre o eixo y......................................................................................60Segunda lei de Newton sobre o eixo z......................................................................................60Segunda lei de newton no eixo x modificado...........................................................................60Segunda lei de newton no eixo y modificado...........................................................................60Segunda lei de newton no eixo z modificado...........................................................................60Acelerao como a derivativa da velocidade em relao ao tempo..........................................61Acelerao como a derivativa da velocidade no eixo x em relao ao tempo..........................61Acelerao como a derivativa da velocidade no eixo y em relao ao tempo..........................61Acelerao como a derivativa da velocidade no eixo z em relao ao tempo..........................61Velocidade como a derivativa da posio em relao ao tempo...............................................61Velocidade no eixo x como a derivativa da posio em x em relao ao tempo......................61Velocidade no eixo y como a derivativa da posio em y em relao ao tempo......................61Velocidade no eixo z como a derivativa da posio em z em relao ao tempo.......................61Acelerao como a derivativa da velocidade pelo tempo.........................................................63Velocidade como a derivativa da posio pelo tempo..............................................................63Acelerao como uma derivativa vezes a derivativa da posio pelo tempo...........................63Acelerao como a derivativa de segundo grau da posio pelo tempo...................................63Equao da lei de Hook............................................................................................................63Equao da lei de Hook modificado de acordo com a segunda lei de Newton........................63Derivativa da velocidade como sendo a lei de Hook divido pela massa..................................63Derivativa da posio em x como sendo a velocidade..............................................................63Lei da gravitao universal.......................................................................................................67Frmula da resistncia do vento................................................................................................68Lei de Hook...............................................................................................................................68A fora da lei de Hook no segundo objeto influenciado...........................................................68
-
SumrioRESUMO..................................................................................................................................111 INTRODUO.....................................................................................................................12
1.1 Apresentao..................................................................................................................121.2 Objetivos........................................................................................................................14
1.2.1 Objetivo Geral........................................................................................................141.2.2 Objetivos especficos..............................................................................................14
1.3 Justificativa.....................................................................................................................151.4 Metodologia....................................................................................................................151.5 Cronograma Proposto.....................................................................................................171.6 Cronograma Executado..................................................................................................18
2 FUNDAMENTAO TERICA.........................................................................................192.1 Introduo ao Sistema de Partculas...............................................................................19
2.1.1 Modelo bsico de um sistema de partculas...........................................................202.1.1.1 Gerao de partculas......................................................................................212.1.1.2 Atributos das partculas...................................................................................212.1.1.3 Dinmica das partculas..................................................................................232.1.1.4 Extino de partculas.....................................................................................232.1.1.5 Renderizao de partculas.............................................................................232.1.1.6 Hierarquia de partculas..................................................................................23
2.1.2 Exemplos de animaes geradas por sistemas de partculas..................................242.2 Mecnica Clssica..........................................................................................................25
2.2.1 Sistema de coordenadas Cartesianas......................................................................252.2.2 Vetores....................................................................................................................262.2.3 Massa......................................................................................................................262.2.4 Segunda Lei de Newton..........................................................................................272.2.5 Velocidade...............................................................................................................272.2.6 Acelerao..............................................................................................................282.2.7 Fora.......................................................................................................................28
2.3 Resolvendo problemas fsicos por meio de Mtodos Numricos..................................292.3.1 Soluo numrica de Equaes Diferenciais Ordinrias........................................29
2.3.1.2 Mtodos de Runge-Kutta................................................................................302.4 Programao Orientada a Objetos..................................................................................34
2.4.1 O que Programao Orientada a Objetos.............................................................352.4.2 Caractersticas da Programao Orientada a Objeto..............................................35
2.4.2.1 Encapsulamento..............................................................................................352.4.2.2 Abstrao de dados.........................................................................................362.4.2.3 Polimorfismo...................................................................................................362.4.2.4 Herana...........................................................................................................37
3 MODELAGEM E IMPLEMENTAO...............................................................................383.1 Arquitetura e modelagem de um Sistema de Partculas.................................................38
3.1.1 Criando as estruturas de dados de um sistema de partculas..................................393.1.1.1 Partcula..........................................................................................................393.1.1.2 Sistema de partculas.......................................................................................413.1.1.3 Gerenciador de Sistemas de partculas...........................................................44
3.2 Execuo do sistema de partculas.................................................................................483.2.1 Gerao das partculas............................................................................................50
3.2.1.1 Criando partculas dentro de nascedouros......................................................513.2.1.1.1 Primeiro nascedouro: Ponto....................................................................52
-
3.2.1.1.2 Segundo nascedouro: Plano....................................................................533.2.1.1.3 Terceiro nascedouro: Disco.....................................................................543.2.1.1.4 Quarta frma: Cubo.................................................................................55
3.2.1.2 Calculando valores iniciais usando processos estocsticos............................563.2.1.2.1 Utilizando processos estocsticos para controlar a quantidade de partculas geradas no sistema.................................................................................563.2.1.2.2 Utilizando processos estocsticos para calcular valores iniciais para os atributos das partculas...........................................................................................58
3.2.2 Movimento das partculas.......................................................................................593.2.2.1 Definindo a relao entre posio, velocidade, acelerao e fora.................593.2.2.2 Preparando as equaes diferenciais para o mtodo de Runge-Kutta............623.2.2.3 Modelando as classes EDO e Runge-Kutta....................................................643.2.2.4 As foras que agem no sistema.......................................................................66
3.2.2.4.1 Gravidade................................................................................................673.2.2.4.2 Resistncia do ar......................................................................................683.2.2.4.3 Lei de Hook.............................................................................................683.2.2.4.4 Gravidade Local......................................................................................69
3.3 Renderizao do sistema de partculas...........................................................................703.3.1 Renderizando as partculas como Pontos...............................................................703.3.2 Renderizando as partculas como Linhas...............................................................703.3.3 Renderizando as partculas como Texturas.............................................................713.3.4 Renderizando as partculas de maneira diferente...................................................72
4 Resultados..............................................................................................................................734.1 Mostrando o software em geral......................................................................................734.2 Explicando a interface do software................................................................................77
4.2.1 Alterando as foras do sistema...............................................................................774.2.1.1 Configurando a gravidade...............................................................................784.2.1.2 Configurando a resistncia do vento...............................................................784.2.1.3 Configurando a lei de Hook............................................................................794.2.1.4 Configurando a gravidade local......................................................................79
4.2.2 Alterando as propriedades fsicas das partculas....................................................804.2.2.1 Configurando a velocidade inicial..................................................................804.2.2.2 Configurando o ngulo inicial, massa e tempo de vida das partculas...........81
4.2.3 Alterando a aparncia das partculas.......................................................................814.2.3.1 Alterando a cor inicial e cor final das partculas.............................................814.2.3.2 Alterando o tamanho e adicionando transparncia s partculas....................82
4.2.4 Definindo nascedouros para o sistema...................................................................835 CONCLUSO.......................................................................................................................846 REFERNCIAS BIBLIOGRFICAS...................................................................................85
-
11
RESUMO
O presente trabalho visa apresentar um modelo e implementao de um sistema de partculas utilizando fundamentos tericos nos artigos que falam sobre o tema, o objetivo modelar e animar objetos no-determinsticos, nas quais as tcnicas clssicas da computao grfica no conseguem atingir resultados satisfatrios.
O sistema de partculas foi introduzido por William Reeves em 1983 quando estava com a responsabilidade de produzir efeitos especiais no filme Star Trekk 2: A fria de Khan, o resultado foi um artigo cientfico explicando como que funciona esse efeito e a partir de ento, muitos outros cientistas comearam a estender o sistema para produzir outros efeitos interessantes e mais complexos.
Com levantamento bibliogrfico sobre as reas que so usadas para produzir um sistema de partculas, como fsica, processos estocsticos e mtodos numricos, esse trabalho produz uma monografia explicativa sobre o tema e que aborde todos os aspectos sobre a construo de um sistema de partculas bsico utilizando a programao orientada a objeto.
O resultado um software que anima diversos efeitos abstratos na tela, juntamente com uma interface que permite alterar o comportamento da animao, produzindo cada vez mais efeitos.
Palavras-chave: sistema de partculas, computao grfica, mtodos numricos, fsica
-
12
1 INTRODUO
1.1 Apresentao
O homem sempre buscou registrar e expressar suas aes e arte por meio de desenhos,
como possvel observar por meio de figuras achadas em cavernas e das animaes feitas
com papel e lpis. Hoje no diferente, mas em vez de carvo, giz ou papel usa-se o
computador para desenhar figuras e gerar animaes que cada vez mais se parecem com o
mundo real.
Shirley(2005) diz que a computao grfica a rea da Cincia da Computao que
descreve o uso de computadores para criar e manipular imagens e tambm responsvel pelo
progresso da animao criada por computadores. Uma animao simplesmente um conjunto
de figuras que so passadas rapidamente de forma consecutiva.
No decorrer da evoluo da computao grfica e da animao por computador, houve
um certo tempo em que a necessidade era mostrar imagens mais parecidas com o mundo real,
objetos que no possuam um forma fsica definida no eram facilmente gerados no
computador usando as tcnicas daquele tempo, que consistia em modelar objetos usando
primitivas como polgonos em geral.
Fenmenos e elementos da natureza como chuva, furaces, fogo, galxias, gua,
gases, nuvens, flora em geral e efeitos como exploses no eram possveis de se representar
usando as tcnicas clssicas da Computao Grfica, pois esses elementos no possuem uma
superfcie slida e tambm no so estticos e suas formas mudam com o tempo, por esse
motivo, so chamados de objetos com forma no-determinstica, ou seja, so objetos que no
possuem uma forma definida no tempo, segundo Reeves(1983).
Uma das tcnicas que apareceu para simular esses efeitos o sistema de partculas
introduzido por William Reeves em seu artigo pela SIGGRAPH1 83, na qual consiste em
vrias primitivas ( representadas por pontos no espao tridimensional ) sendo manipuladas e
1 Conferncia internacional anual realizada por entusiastas da computao grfica.
-
13
renderizadas individualmente. Um sistema de partculas difere em trs aspectos em relao
modelagem tradicional na computao grfica: Primeiro, o objeto representado atravs de
partculas (pontos) e no atravs de polgonos ou superfcies, os pontos que apresentam o
volume e a forma do objeto num dado instante. Segundo: Um sistema de partculas no uma
entidade esttica, ela se move e muda de forma com o passar do tempo. Novas partculas
nascem e partculas velhas morrem. Terceiro: O objeto representado por esse sistema no
determinstico, ou seja, no possui uma forma ou superfcie definida e, com o passar do
tempo, essa forma muda.
O presente trabalho visa demonstrar o desenvolvimento de um sistemas de partculas
utilizando o paradigma de programao orientada a objeto (POO).
-
14
1.2 Objetivos
1.2.1 Objetivo Geral
A fim de contribuir para a rea de Computao Grfica, no que concerne a rea de
animao utilizando sistemas de partculas, este trabalho tem como objetivo implementar um
sistema de partculas bsico utilizando todos os conceitos do paradigma de programao
orientada a objeto.
1.2.2 Objetivos especficos
Para alcanar o objetivo citado anteriormente, estudos sero feitos sobre o sistema de
partculas e sobre as reas que suportam esse sistema, dentre as quais citamos: Mecnica
Clssica e Mtodos Numricos. Os seguintes passos sero seguidos:
Estudar a Mecnica Clssica Newtoniana e aplicar esses conceitos na implementao
de um sistema de partculas.
Estudar o mtodo numrico de Runge-Kutta de 4 ordem utilizado na resoluo de
equaes diferenciais ordinrias e aplicar esse mtodo para promover a movimentao
das partculas.
Estudar o Sistema de partculas proposto por William Reeves.
Estudar os conceitos do paradigma de programao orientada a objeto e suas
aplicaes no desenvolvimento de um sistema de partculas.
Implementar o sistema de partculas proposto por William Reeves utilizando conceitos
do paradigma de programao orientada a objeto e conhecimentos da Mecnica
Newtoniana e mtodos numricos.
-
15
1.3 Justificativa
O sistema de partculas proposto por William Reeves, trouxe uma enorme ampliao
nas aplicaes da Computao Grfica sendo que, antes disso no era possvel ou era muito
difcil modelar e animar elementos da natureza e objetos no-determinsticos. Na literatura
difcil retirar informaes suficientes para implementar um sistema de partculas, pelo fato
dessas informaes estarem separadas, sendo que em artigos de Computao Grfica
consultados, no mostrado em profundidade a fsica utilizada no sistema, e os livros de
fsica no mostram a parte de renderizao e efeitos especiais.
Neste trabalho procura-se organizar o contudo necessrio para a implementao de
um sistema de partculas, enfatizando a parte terica necessria para a compreenso dos
conceitos fsicos envolvidos, a parte grfica e a implementao, de modo que o leitor possa ter
uma compreenso global do problema.
1.4 Metodologia
O presente trabalho ser feito atravs dos seguintes passos:
Levantamento bibliogrfico e implementao dos tpicos da Mecnica Clssica
Newtoniana que apresentem uma aplicao no desenvolvimento de um sistema de
partculas.
Levantamento bibliogrfico e implementao do mtodo de Runge-Kutta de 4 ordem,
que um tpico de Mtodos Numricos que visa a resoluo de equaes diferenciais
ordinrias.
Levantamento bibliogrfico sobre o Sistema de partculas proposto por William
Reeves (1983) e suas aplicaes.
Implementar um sistema de partculas utilizando os tpicos da Mecnica Clssica
Newtoniana e o mtodo de Runge-Kutta de 4 ordem. Tudo isso por meio do
paradigma de programao orientada a objeto.
-
16
As tecnologias usadas sero: A linguagem de programao Java, e a biblioteca JOGL,
que a ligao do OpenGL com o Java.
Ou seja, a metodologia usada consiste em levantamentos bibliogrficos a respeito dos
assuntos j citados e implementaes dos tpicos desses assuntos que forem relevantes para a
implementao de um sistema de partculas segundo o paradigma de programao orientada a
objeto.
-
17
1.5 Cronograma PropostoO presente trabalho foi desenvolvido tendo em mente o cronograma abaixo, que foi
elaborado com base nos objetivos especficos e na metodologia adotada com propsito de
alcanar o objetivo geral proposto.
Meses/Semanas
Etapas Agosto Setembro Outubro Novembro Dezembro
1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
Etapa 1
Etapa 2
Etapa 3
Etapa 4
Etapa 5
Etapa 6
Etapa 1 Estudo bibliogrfico sobre Sistemas de Partculas
Um estudo foi feito sobre o sistema de partculas em si, para obter uma viso geral e
responder perguntas como: o que um sistema de partculas? Como funciona? Etc.
Etapa 2 Estudo bibliogrfico aprofundado da mecnica clssica newtoniana
Esse estudo visa obter uma viso geral da fsica por trs do sistema de partculas.
Etapa 3 Estudo bibliogrfico sobre Mtodos Computacionais
Visa obter conhecimento sobre o mtodo numrico de Runge-Kutta de 4 ordem.
Etapa 4 Estudo da implementao de um sistema de partculas utilizando o paradigma
de Programao Orientada a Objetos
Visa demonstrar a modelagem do sistema atravs do conceito de programao
orientada a objeto e a implementao do sistema, dando mais ateno aos detalhes e
utilizando todos os conceitos vistos at ento.
Etapa 5 Demonstrao dos resultados
Mostra os resultados obtidos do sistema implementado.
Etapa 6 Apresentao para a banca examinadora
Apresentao do trabalho e do sistema implementado banca examinadora.
-
18
1.6 Cronograma ExecutadoO presente trabalho foi desenvolvido de acordo com o cronograma abaixo.
Meses/Semanas
Etapas Agosto Setembro Outubro Novembro Dezembro
1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
Etapa 1
Etapa 2
Etapa 3
Etapa 4
Etapa 5
Etapa 6
Etapa 1 Estudo bibliogrfico sobre Sistemas de Partculas
Um estudo foi feito sobre o sistema de partculas em si, para obter uma viso geral e
responder perguntas como: o que um sistema de partculas? Como funciona? Etc.
Etapa 2 Estudo bibliogrfico aprofundado da mecnica clssica newtoniana
Esse estudo visa obter uma viso geral da fsica por trs do sistema de partculas.
Etapa 3 Estudo bibliogrfico sobre Mtodos Computacionais
Visa obter conhecimento sobre o mtodo numrico de Runge-Kutta de 4 ordem.
Etapa 4 Estudo da implementao de um sistema de partculas utilizando o paradigma
de Programao Orientada a Objetos
Visa demonstrar a modelagem do sistema atravs do conceito de programao
orientada a objeto e a implementao do sistema, dando mais ateno aos detalhes e
utilizando todos os conceitos vistos at ento.
Etapa 5 Demonstrao dos resultados
Mostra os resultados obtidos do sistema implementado.
Etapa 6 Apresentao a banca examinadora
Apresentao do trabalho e do sistema implementado banca examinadora.
-
19
2 FUNDAMENTAO TERICA
2.1 Introduo ao Sistema de Partculas
Segundo Reeves(1983), fenmenos como nuvens, gua, fumaa e fogo tem provado
ser difcil de modelar e animar com as tcnicas tradicionais de sntese de imagens da
computao grfica.
Objetos como esses citados no possuem uma forma definida, tal como um carro ou
uma mesa, em vez disso suas formas so complexas, mudam com o tempo e so
completamente irregulares. Assim, William Reeves props uma tcnica para a modelagem de
objetos no-determinsticos, na qual ele chamou de Sistema de partculas.
A apresentao do mtodo proposto por Reeves se diferencia das tcnicas tradicionais
de modelagem em trs pontos:
1) Um objeto no representado por polgonos ou por qualquer forma que defina sua
superfcie, mas polgonos primitivos ( pontos e linhas ) definem seu volume.
2) Um sistema de partculas no uma entidade esttica, as partculas se movimentam
com o passar do tempo. Novas partculas nascem e velhas partculas morrem.
3) Um objeto representado por um sistema de partculas no determinstico, j que sua
forma no completamente especificada, no entanto, mtodos estocsticos ( que
utilizam aleatoriedade ) so usados para criar e mudar forma e aparncia do objeto.
Algumas das vantagens que William Reeves fala que o sistema de partculas traz,
que as partculas so primitivas simples de renderizar, por isso, muitas partculas podem ser
renderizadas na tela, dando assim um maior realismo na modelagem do objeto no-
determinstico.
Outra vantagem que o sistema de partculas se auto-ajusta atravs de nmeros
aleatrios, ou seja, as partculas se comportam de acordo com um algoritmo pr-estabelecido
que atualizado atravs da aleatoriedade, o que faz com que o sistema no precise de controle
humano durante a sua execuo. E tambm porque esse sistema modela objetos que esto
'vivos', o que extremamente difcil de se conseguir com as tcnicas convencionais de
modelagem e animao.
-
20
2.1.1 Modelo bsico de um sistema de partculas
Em seu artigo, Reeves segue dizendo que as partculas so geradas no sistema, so
movidas, transformadas e mortas dentro do sistema. Para que a animao ocorra, os
seguintes passos so executados:
1. Novas partculas so geradas dentro do sistema.
2. Os atributos individuais de cada nova partcula so inicializados.
3. Qualquer partcula que j tenha ultrapassado seu tempo de vida so excludos do
sistema
4. As partculas existentes so movidas e transformadas de acordo com suas
especificaes. Por exemplo, se a partcula tem um movimento circulatrio, assim ela
se mover.
5. Uma imagem, ou primitiva que representa uma partcula, renderizado na tela.
Qualquer modelo matemtico pode ser usado para definir o comportamento e a
aparncia das partculas dentro do sistema. Por exemplo, o movimento das partculas poderia
ser implementado usando um mtodo de resoluo de equaes diferenciais ordinrias ( que
o caso desse trabalho ) na qual, a cada atualizao do sistema, as equaes dariam um novo
valor posio das partculas.
Assim como a aparncia tambm pode ser modelada de vrias formas, embora a forma
mais simples seja o uso de pontos ou linhas, cada partcula pode ser representada como uma
imagem ou um objeto poligonal.
-
21
2.1.1.1 Gerao de partculas
Segundo Reeves(1983), partculas so geradas por meio do controle de processos
estocsticos. Um processo determina o nmero de partculas que estaro entrando no sistema
a cada intervalo de tempo, ou seja, a cada frame da animao. O nmero de partculas define a
densidade do objeto que est sendo modelado. A gerao de partculas a cada frame definida
atravs da frmula:
nParticulas = nPartDesejadas + rand()*variaoParticulas
Onde 'rand()' gera um nmero pseudo-aleatrio entre -1.0 e 1.0, 'nPartDesejadas' o
nmero de partculas que o usurio quer que o sistema gere e 'variaoPartculas' a variao
que o nmero de partculas vai possuir, ou seja, se o usurio deseja que o sistema gere 50
partculas a cada frame, com uma variao de 50, o nmero de partculas que o sistema gerar
ser:
nParticulas = 50 + rand()*50
Supondo que rand() retorne 0.5, nParticulas ser 50 + 0.5*50 = 75. O sistema ir gerar
75 novas partculas nesse frame da animao, o que influencia fortemente na densidade do
objeto que esta sendo representado.
2.1.1.2 Atributos das partculas
Para cada nova partcula gerada, o sistema de partculas deve determinar valores para
cada um dos seguintes atributos:
1. Posio inicial
2. Velocidade inicial ( velocidade e direo )
3. Tamanho inicial
4. Cor inicial
5. Transparncia inicial
6. Forma ( geralmente ponto ou linha )
7. Tempo de vida
-
22
Um sistema de partculas tem sua posio no espao tridimensional que define sua
origem e dois ngulos de rotao sobre o sistema de coordenada na origem do sistema de
partculas. Um sistema de partculas tambm possui um nascedouro, que uma regio onde as
partculas so aleatoriamente colocadas para nascer, desde que a posio inicial delas seja
dentro dos limites do nascedouro. Dentre esses nascedouros pode-se citar uma esfera, um
cubo, um crculo, um plano ou um simples ponto.
Figura 1: Sistema de partculas com um nascedouro em forma de esfera, as partculas nascem aleatoriamente em posies que estejam dentro da esfera.
-
23
2.1.1.3 Dinmica das partculas
Partculas se movem no espao tridimensional, assim como mudam suas cores,
transparncias e formas. Para mover uma partcula de um frame para o prximo, basta
adicionar o vetor de velocidades para o vetor de posio de cada partcula. Para aumentar a
complexidade, pode-se adicionar leis da fsica, para que as partculas se comportem como no
mundo real, o que o presente trabalho traz como proposta de implementao. As cores, formas
e transparncias das partculas podem ser controlados por processos estocsticos, tal como a
gerao de partculas feita.
2.1.1.4 Extino de partculas
Quando gerada, dada para uma partcula um tempo de vida baseada no nmero de
frames na qual essa partcula ir agir, depois de passado esse tempo a partcula deletada do
sistema, outros mecanismos permitem extinguir a partcula quando ela no contribui mais
para a imagem, isso acontece quando ela fica transparente ou quando sua cor se torna igual ao
da cor de fundo, ou quando ela sai dos limites do monitor do computador.
2.1.1.5 Renderizao de partculas
Quando a posio das partculas e seus atributos estiverem atualizados, basta desenhar
a imagem ou primitiva que represente a partcula no monitor do computador. Quando
partculas se encontram, a coliso pode ou no ser detectada. Sombras podem ou no ser
necessrias, j que partculas podem ser implementadas para emitir luz. A cena em que o
sistema de partculas se encontra pode ou no interagir com o sistema.
2.1.1.6 Hierarquia de partculas
O sistema de partculas proposto por Reeves possui um mecanismo que controla a
formao e o controle das partculas. Vrios sistemas de partculas podem ser colocadas, cada
uma com um movimento e comportamento diferente, todos eles controlados por um sistema
'pai', por exemplo, um objeto no-determinstico complexo como uma nuvem pode ser
representado por vrios sistemas, cada um cuidando de um aspecto da nuvem.
No alto da hierarquia, o sistema pai pode inclusive cuidar dos efeitos da gravidade ou
vento, mandando esse efeito para todos os sistemas que esto sobre seu domnio.
-
24
2.1.2 Exemplos de animaes geradas por sistemas de partculas
Segundo Sims(1990), o filme animado Particle Dreams foi criado inteiramente usando
sistemas de partculas. Dentre os efeitos apresentados no filme, pode-se citar fogos orbitais,
tempestades de neve, cachoeiras,etc. Ser mostrado abaixo figuras extradas de seu artigo para
SIGGRAPH 90, o que tornou possvel fazer com sistemas de partculas na computao
grfica.
Figura 4: Imagens do filme animado Particle Dreams, acima uma tempestade de neve e abaixo uma cabea respirando.Figura 3: Efeito de gua utilizando
um sistema de partculas.
Figura 2: Efeitos de letras queimando (acima), e vortex (abaixo).
Figura 5: Partculas orbitando em volta de um ncleo (Acima), exploso (meio) e uma cachoeira (abaixo).
-
25
2.2 Mecnica Clssica
Um sistema de partculas pode ser regido pelas leis fsicas da Mecnica clssica
desenvolvido por Sir Isaac Newton. Segundo Bourg(2002), Newton formulou as famosas Leis
do Movimento, que so ditadas a seguir:
1. Um corpo tende a permanecer em movimento em uma linha reta com uma velocidade
constante, at que uma fora externa venha agir sobre ele. Esse o conceito de inrcia.
2. A acelerao de um corpo proporcional da fora resultante que age no corpo, e essa
acelerao na mesma direo que a fora resultante.
3. Para toda fora agindo sobre um corpo, h uma fora de igual intensidade em sentido
contrrio fora que est agindo no corpo.
O sistema de partculas proposto por Reeves, pode ser regido por essas leis, mais
precisamente pelas duas primeiras. Pode-se citar como exemplo a simulao de exploses e
balstica que utilizam largamente esses conceitos. As prximas sees tratam de algumas
partes da Mecnica Clssica que so usadas diretamente para a fsica de partculas neste
trabalho.
2.2.1 Sistema de coordenadas Cartesianas
O sistema de coordenadas cartesianas uma abstrao do espao, onde objetos podem
ser representados como pontos ao longo de trs eixos geralmente nominados como x, y e z.
Sabendo a distncia desse ponto de origem ( x = 0, y = 0, z = 0 ), pode-se obter as
coordenadas do ponto, revelando assim sua exata posio. Partculas so representadas como
pontos no espao tridimensional e cada partcula possui uma posio em cada eixo do sistema
de coordenadas, ou seja, possui um valor x, y e z. A figura 6 mostra exemplos de desenhos
representando um sistema de coordenadas cartesianas.
-
26
2.2.2 Vetores
Quando algum fala que um cesto de mas contm 5 mas, o nmero 5 est se
referindo a quantidade de mas na cesta, esse valor algo que por si s j possui um
significado completo. Mas quando algum fala que um objeto est a 100 km/h, pode-se inferir
apenas a intensidade da velocidade, mas, em que direo e em qual sentido o objeto est se
movendo? O valor no caso da cesta de mas chamado de grandeza escalar, enquanto que o
valor da velocidade do objeto chamado de grandeza vetorial, sendo representado por um
vetor, isso porque um vetor demonstra tanto a intensidade, direo e sentido.
Segundo Millington(2007), um vetor representa uma mudana na posio de um
ponto. Partculas so pontos que se movem constantemente no espao tridimensional, por
isso, a representao da velocidade, acelerao e das foras que agem nas partculas sero
representadas como vetores, pelo simples fato de que todos esses fatores possurem uma
intensidade, uma direo e um sentido.
2.2.3 Massa
A massa de um corpo geralmente interpretado como a quantidade de matria que o
corpo possui. No caso de fsica focada em computao e mais especificamente em um sistema
de partculas, a massa pode ser interpretada como a quantidade de resistncia que a partcula
ir ter contra uma alterao de sua posio.
Figura 6: Coordenadas cartesianas, representa um espao tridimensional.
-
27
2.2.4 Segunda Lei de Newton
A massa desempenha um papel muito importante na segunda lei de Newton como se
pode ver pela frmula: F = ma, sendo 'm' a quantidade massa que a partcula possui e 'a' a
acelerao da partcula, F seria a fora resultante que age na partcula.
Manipulando a equao, para que fique assim: a = F/m, percebe-se que a massa da
partcula oferece resistncia a movimentao ou a fora aplicada sobre ela, a fora resultante
ser reduzida proporcionalmente a massa.
Quanto maior a massa de uma partcula, mais difcil ser de mudar a posio dela,
assim como, quanto menor a massa, mais fcil ser de movimentar a partcula. Num sistema
de partculas, geralmente calcula-se todas as foras primeiro e depois pega esse resultado e
divide-se pela massa, gerando ento a acelerao da partcula num dado instante.
2.2.5 Velocidade
Como dito anteriormente, a velocidade representada por um vetor porque possui uma
intensidade, direo e um sentido. Por definio, velocidade significa a distncia percorrida
num dado intervalo de tempo. Por exemplo, uma partcula no espao em uma determinada
hora ( supondo t = 0 ) est numa posio x, passado dois segundos, a posio da partcula
mudou para x + 2, ou seja, a partcula andou 1 posio para cada segundo passado, ento diz
que a partcula teve uma velocidade de 1 p/s ( posio por segundo ). Em termos de fsica
focada em computao e mais precisamente em sistemas de partculas, pode-se dizer que a
velocidade ser o tanto de posio que a partcula ir andar a cada passagem de tempo, ou
seja, quanto maior for a velocidade, mais distante a partcula ir se deslocar a cada acrscimo
de tempo.
Figura 7: Uma partcula nas posies t = 0, t = 1/2 e t = 1.
-
28
2.2.6 Acelerao
Acelerao a taxa com que a velocidade de uma partcula aumentada. Por exemplo,
como citado anteriormente na frmula da segunda lei de Newton, a acelerao pode ser obtida
atravs da razo da fora resultante com a massa, depois de calculado a acelerao, ela
somada com a velocidade, fazendo com que a partcula fique mais rpida.
2.2.7 Fora
Certos fenmenos fsicos so chamados de foras, sendo que uma fora toda 'energia'
que, segundo Millington(2007), faz com que a acelerao ou movimento de um objeto mude.
Ao arrastar uma caixa, percebe-se que deve fazer fora para empurr-la, isso acontece
porque uma fora chamada atrito ( da caixa com o cho ) est dificultando o processo, ou seja,
o atrito uma fora que est mudando a acelerao da caixa ( nesse caso, retardando o
aumento da acelerao ). No caso de um sistema de partculas, toda fora far alguma
mudana de movimento em cada partcula, desde de que a massa da partcula no seja muito
grande, caso contrrio, a partcula mal se mover.
Como exemplos de foras podemos citar o vento, gravidade, presso, etc. A acelerao
de uma partcula determinada pela soma de todas as foras dividido pela massa, sendo
assim, os passos para se realizar a movimentao das partculas ficaria o seguinte:
1. Calcula-se as propriedades da partcula como massa, posio inicial, velocidade, etc.
2. Identifica e calcula todas as foras atuantes no sistema.
3. Pegue a soma de todas as foras.
4. Calcula a acelerao atravs da segunda lei de Newton manipulada: a = F/m.
5. Atualiza a posio, velocidade da partcula utilizando mtodos de resoluo de
equaes diferenciais ordinrias.
-
29
2.3 Resolvendo problemas fsicos por meio de Mtodos Numricos
Muitos problemas fsicos so modelados por meio de equaes diferenciais ordinrias,
em funo de suas caractersticas, a resoluo desses modelos exigem tcnicas numricas. No
caso da Mecnica Clssica que foi exposta anteriormente, as equaes diferenciais ordinrias
como a de acelerao (supondo que a mesma no seja constante ) no podem ser resolvidos
com a preciso que necessria numa animao de um sistema de partculas sem tais mtodos
numricos.
Segundo Trefethen(2008), quando cientistas e engenheiros precisam de respostas
numricas para problemas matemticos, eles se voltam para os computadores. Mtodos
numricos o estudo de algoritmos para a soluo de problemas da matemtica contnua.
Muitas pessoas imaginam que cientistas e matemticos criam uma frmula, e ento,
inserindo nmeros nessas frmulas os computadores calculam os resultados necessrios. Na
realidade no bem assim. Em muitos casos a computao no pode ser feita com frmulas,
porque a maioria dos problemas matemticos no podem ser resolvidas com uma seqncia
finita de operaes elementares. O que acontece que algoritmos rapidamente convergem
para aproximaes das respostas com uma preciso de 3, 10 dgitos, etc. Para uma aplicao
cientfica de um fenmeno fsico, essas aproximaes so uma resposta to boa quanto a
resposta exata.
2.3.1 Soluo numrica de Equaes Diferenciais Ordinrias
A resoluo de equaes diferenciais ordinrias atravs de mtodos numricos consiste
em calcular aproximaes dos resultados dessas equaes, por meio de algoritmos que quando
executados, oferecem um valor prximo do valor exato da equao. No caso da equao da
segunda lei de Newton, cada vez que o sistema de partculas atualizasse seus movimentos, um
algoritmo de resoluo de equaes diferenciais calcularia um valor aproximado e atualizaria
a posio da partcula.
Nos problemas de valor inicial como o caso das equaes da Mecnica Clssica
usadas no presente trabalho, existem muitos mtodos para resolver tais equaes, cada um
-
30
com seus pontos fracos e fortes. Dentre eles podemos citar o mtodo de Euler, os mtodos de
Runge-Kutta que consistem numa srie de mtodos, extrapolao de Richardson e mtodos
multi-passo. No contexto desse trabalho optou-se pelo mtodo de Runge-Kutta de 4 ordem
em funo de sua preciso.
2.3.1.2 Mtodos de Runge-Kutta
Segundo Press(2007), os mtodos de Runge-Kutta propagam a soluo sobre um
intervalo combinando a informao provida de muitos passos do estilo do mtodo de Euler
(cada um com avaliao do lado direito da funo), e ento usando a informao obtida para
conseguir uma correspondncia a uma srie de Taylor.
O mtodo de Runge-Kutta de 4 ordem uma evoluo de seu antecessor, o mtodo de
Euler para resoluo de equaes diferenciais ordinrias, que nada menos que o mtodo de
Runge-Kutta de 1 ordem, na qual a equao :
yn1= ynh xn , y n (1)
O mtodo de Euler no usado na prtica pelo fato de ser pouco preciso e instvel, ou
seja, dependendo do valor que ele processa, os resultados podem variar muito do resultado
esperado e assim oferecendo valores imprecisos, na prtica, isso significaria que as partculas
no iriam se comportar como no mundo real e poderiam inclusive demonstrar um
comportamento bem longe do esperado, a seguir ser mostrado como se chega ao mtodo de
Runge-Kutta de 4 ordem atravs do mtodo de Euler.
Na equao anterior, o termo esquerda da igualdade significa o prximo valor de y,
na prtica isso significaria a prxima posio da partcula. A prxima posio obtida
pegando a posio inicial ( yn ) e somando com a multiplicao de um intervalo de tempo ( h )
com a equao diferencial ordinria que esta sendo resolvida ( como exemplo podemos citar a
segunda lei de Newton F = ma, na sua forma a = F/m ou dv/dt = F/m ).
Como dito anteriormente, o mtodo de Euler no muito preciso, por isso, segundo
Press(2007), essa equao pode ser melhorada adicionando um passo intermedirio,
melhorando a preciso do mtodo. A figura 8 mostra o que o mtodo de Euler faz para chegar
-
31
ao resultado. O passo 2 conseguido simplesmente com o passo 1 mais o intervalo de tempo
requerido junto com a funo.
A preciso do mtodo de Euler no das melhores, j a equao 4 abaixo, que
representa o mtodo de Euler melhorado ou mtodo de Runge-Kutta de 2 ordem, adiciona um
passo intermedirio entre os passos 1 e 2 da figura 8, o que faz a preciso do algoritmo
melhorar.
k 1=h xn , yn (2)
k 2=h xnh2
, ynk 12
(3)
yn1= ynk 2 (4)
A figura 9 mostra a melhora do algoritmo de 2 ordem em relao ao de 1 ordem
( Mtodo de Euler ). Os passos 2 e 4 so os passos intermedirios acrescidos na equao, o
que causa um aumento na preciso do resultado acrescido com um aumento no intervalo de
processamento do algoritmo.
Figura 8: Mtodo de Euler, estima o valor de yn+1 em funo de yn.
-
32
Mas no para por ai, a idia bsica do mtodo de Runge-Kutta ir adicionando passos
intermedirios, aumentando assim a sua preciso. Um algoritmo clssico usado por cientistas
o mtodo de Runge-Kutta de 4 ordem que mostrado a seguir, que obtido do mtodo de
2 ordem mostrado anteriormente. Esse mtodo simplesmente aumenta o nmero de passos
intermedirios aumentando assim a sua preciso num timo nvel e mantendo um tempo de
processamento no muito longo, se tornando adequado para o uso de um animao de um
sistema de partculas.
k 1=h xn , yn (5)
k 2=h xnh2
, ynk 12 (6)
k 3=h xnh2
, ynk 22 (7)
k 4=h xnh , ynk3 (8)
yn1= ynh6k 12k 22k3k 4 (9)
O prximo valor de y ( posio de uma partcula no nosso caso ) dado pelo valor
atual mais os passos intermedirios multiplicados por pesos. A figura 10 demonstra o que esse
mtodo faz.
Figura 9: Mtodo de Runge-Kutta de 2 ordem, nota-se uma maior preciso comparada com o mtodo de Euler.
-
33
Para muitos cientistas, o mtodo de Runge-Kutta de 4 ordem no somente a
primeira palavra em algoritmos para soluo de equaes diferenciais ordinrias mas tambm
a ltima palavra. No presente trabalho, esse mtodo foi escolhido para resolver as equaes
presentes na fsica clssica, pelo fato de esse mtodo ser eficiente e rpido em seu
processamento.
Atravs da Mecnica Clssica e o mtodo Runge-Kutta de 4 ordem para resolver as
equaes da fsica, um sistema de partculas atinge um comportamento realista em seus
movimentos, com isso a simulao de efeitos de exploses por exemplo, iro se parecer como
no mundo real, levando a computao grfica ao nvel de simulao fiel ao realismo e no
uma simples rea que simplesmente faz desenhos no computador.
Figura 10: Mtodo Runge-Kutta de 4 ordem.
-
34
2.4 Programao Orientada a Objetos
Dentro da computao existem vrios paradigmas, (tambm chamados de filosofias)
de programao. O jeito que se programa determinado software pode mostrar como ser sua
manuteno no futuro, sua performance e sua legibilidade. Quando se fala de um sistema de
partculas, esta se falando de um sistema de computao que simula na tela de um computador
objetos que no possuem forma fsica permanente, isso quer dizer que a tcnica de Reeves
tambm um software e deve ser programado.
Antes de falar sobre o paradigma de programao orientado a objeto, ser apresentado
uma reviso superficial sobre o que um sistema de partculas na prtica. Nesse sistema, cada
partcula possui seus atributos e comportamentos prprios e so independentes uns dos outros,
cada elemento possui posio, acelerao, velocidade, cor, tempo de vida, forma ( geralmente
representado por um ponto ), etc. Os atributos podem ser vrios. O sistema como um todo ir
atualizar cada partcula usando as foras que atuam no ambiente, ou seja, no software ir
existir um componente que ir controlar a atualizao das partculas e calcular as foras, esse
componente pode ser chamado de Controlador de partculas por exemplo e tambm
possuir atributos prprios.
Percebe-se que um sistema de partculas possui muitos objetos em cena, a saber, o
controlador e muitas partculas. A cena pode muito bem aumentar, fazendo mais controladores
por exemplo que controlem cada tipo de sistema de partcula: um controlador para o sistema
que simula um furaco, outro que controle o sistema de exploso, outro para simulao de
neve, chuva, etc. E ainda fazer um controlador mestre que controle todos esses sistemas.
Dessa maneira, o paradigma mais apropriado, ou o mais intuitivo para se implementar
a tcnica de Reeves seria a Programao Orientada a Objeto, ou seja, cada componente do
sistema, assim como cada partcula seriam objetos e cada um desses objetos possuiria
atributos e comportamentos prprios. Sendo assim, essa filosofia de programao a
escolhida nesse trabalho para implementar um sistema de partculas.
-
35
2.4.1 O que Programao Orientada a Objetos
Segundo Pokkunuri(1989), uma metodologia de programao que enfatiza o uso de
objetos, seus atributos, comportamentos e relacionamento com outros objetos. Nesse
paradigma de programao, um objeto um elemento primitivo, cada objeto combina dados
e procedimentos, sendo estes ltimos chamados de mtodos que dizem qual o
comportamento do objeto e o que ele pode fazer. Cada objeto pode ser visto como um tipo de
dado abstrato, que definido pelo usurio.
Geralmente se implementa frmas de objetos ( chamados de classes, na maioria das
linguagens de programao orientados a objeto ) que seria como um objeto genrico, do qual
serve de padro para todos os outros objetos. Quando uma classe est pronta, ela pode ser
instanciada para que se forme os objetos, cada objeto possui uma rea de memria reservada
para ele.
2.4.2 Caractersticas da Programao Orientada a Objeto
2.4.2.1 Encapsulamento
Cada objeto uma entidade autnoma e integral. Ele precisa de recursos para
manifestar seus estados e comportamentos. Pode ser visto como uma entidade encapsulada e
protegida, seus dados so privados ( ou no ) e so escondidos de outros objetos. Sua
interao com outros objetos se d por meio de mensagens que so mandadas e respondidas e
cada objeto tem uma viso limitada de outro objeto.
Em um sistema de partculas, cada partcula seria um objeto autnomo e independente,
assim como os controladores delas. Cada partcula possui os seus atributos apenas para si
mesmas e podem ser atualizadas de maneira diferente, j que so independentes uma das
outras. A relao entre os controladores e as partculas se daria por meio de mensagens que
um passa para o outro.
-
36
2.4.2.2 Abstrao de dados
Segundo Pokkunuri(1989), abstrao de dados o princpio de que programas no
deveriam se preocupar em saber o detalhes da implementao ou representao interna.
Em POO ( Programao Orientada a Objetos ), cada objeto pode ser chamado para o
envio de qualquer informao ou servio por meio de mensagens. Aquele que pede o servio
no est preocupado em como a informao/servio processada e enviada, mas sim com o
que ele pede e o que recebe. Como exemplo, num sistema de partculas um objeto controlador
pode solicitar a uma partcula uma informao sobre a fora que est atuando nela naquele
momento, o objeto partcula simplesmente envia a informao para o controlador, este no
sabe como a partcula processa essa informao, ele simplesmente a recebe. A vantagem que a
abstrao de dados traz que o programador no precisa ficar se preocupando com detalhes
de implementao e assim ele pode programar a lgica do sistema mais rapidamente.
2.4.2.3 Polimorfismo
Nas linguagens de programao convencionais, os operadores, funes etc. so
vinculadas para suas respectivas operaes em tempo de compilao ( vinculao esttica ),
sendo assim, eles possuem um nome e um operador, como exemplo podemos citar uma
funo 'print', essa funo nica no sistema e imprime na tela apena uma mensagem.
Em POO, a vinculao do operador feita em tempo de execuo ( vinculao
dinmica ), a mensagem/operador 'print' para um objeto mandado para o 'print' especfico do
objeto, que decidido em tempo de execuo e no em tempo de compilao. A funo 'print'
em cada objeto pode ter comportamentos diferentes, mesmo que o objeto chamador mande
uma nica mensagem, o objeto que a receber ir se comportar de acordo com a sua definio
da funo. A mensagem 'print' recebe respostas diferentes, o que chamado de polimorfismo.
A aplicao do polimorfismo se torna clara num sistema de partculas. Podemos ter um
sistema que simula vrios efeitos, ao atualizar o sistema como um todo, o objeto controlador
pode mandar uma nica mensagem para todas as partculas do sistema, como exemplo
'atualizar posio', ento cada partcula ir se comportar da maneira que foi programada.
-
37
2.4.2.4 Herana
Em linguagens de programao convencionais, funes como 'print' devem ser
sobrescritos quando se deseja alterar algo deles ou quando novos atributos so adicionados no
programa. Em POO isso pode ser melhorado pela Herana, que o fato de uma classe poder
ser escrita uma vez e em seguida ser escrito classes que herdam os atributos e
comportamentos da primeira. Por exemplo, se quisermos implementar uma classe Gato e
Cachorro, podemos antes implementar uma classe Animal contendo todos os atributos
comuns que gato e cachorro possuem, assim nas classes Gato e Cachorro apenas se
implementaria atributos e comportamentos especficos de cada um deles. Isso torna o cdigo
fonte do programa reusvel e com isso desperdiado menos cdigo.
Se alguma mudana feito na classe principal ( classe pai ou super classe ), todas as
classes que herdam dela sofrero as mudanas, ou seja, assim como foi dito por Valade(2008),
as classes filhas herdam todos os atributos do pai. Em um sistema de partculas isso pode ser
muito bem explorado, como exemplo podemos fazer uma classe 'partcula genrica' que
possui todos os atributos comuns s partculas ( posio, velocidade, etc. ) e depois fazer
classes especficas que herdam esses atributos e implementar os comportamentos especficos
de cada partcula ( partculas de exploso se comportaro de uma forma, de neve de outra
forma, etc ).
-
38
3 MODELAGEM E IMPLEMENTAO
3.1 Arquitetura e modelagem de um Sistema de Partculas
Deixando a teoria e passando para a prtica, o primeiro assunto que ir ser tratado na
implementao de um sistema de partculas nesse trabalho ser a sua arquitetura e
modelagem, ou seja, como os elementos iro estar dispostos no sistema como um todo e como
ir ser a estrutura de cada um deles.
Primeiramente deve-se pensar o que se espera de um sistema de partculas, ou seja,
quais os efeitos que ele deve animar e tambm quais efeitos podem ser possveis de serem
feitos. Por exemplo, pode-se citar o efeito de fumaa que, quando um carro passa, a fumaa
influenciada pelo vento causado pelo carro ou ento, uma chuva caindo e logo em seguida um
efeito de nevasca aparece, por causa da variao da temperatura. Pode-se imaginar tambm o
efeito de fogo, cachoeira para simulao de fenmenos da natureza, e no caso de jogos
eletrnicos e filmes, efeitos abstratos de magia, sangue, fluidos viscosos em geral, esses so
alguns dos efeitos que o sistema de partculas desse trabalho deve ser capaz gerar por meio de
futuras extenses.
Efeitos que no so implementados, podero ser adicionados sem muito esforo
futuramente, o que indica que a arquitetura do sistema deve ser extensvel. Outra
caracterstica notvel que o sistema possui vrios efeitos diferentes, que por sua vez possui
parmetros diferentes e comportamentos diferentes, por exemplo: O efeito de neve possui
partculas de cores diferentes, uma dinmica diferente e tempo de vida diferente do que um
efeito de fogo, onde as partculas pertencentes a esse efeito geralmente tero uma cor
avermelhada ou amarelada, assim como a dinmica do fogo ser diferente da dinmica da
neve. Ou seja, cada sistema ter parmetros e dinmicas diferentes um do outro.
Outro fator a ser considerado que numa animao poder existir mais de um sistema
de partculas executando, como exemplo pode-se citar a chuva, que num dado instante
apenas uma gota caindo, que quando atinge o cho se transforma numa pequena exploso
(gua batendo no cho), que pode ser um outro sistema de partculas, observado isso, a
arquitetura deve considerar a execuo e criao de vrios sistemas de partculas, tudo em
tempo real. Dado essas observaes, pode-se modelar o sistema de acordo com a figura 11:
-
39
Dada essa arquitetura, o presente trabalho ir agora observar cada estrutura em
detalhe, por comear pela estrutura mais simples at a mais complexa, nessa ordem: a
partcula, o sistema de partculas e por ltimo o gerenciador de sistemas de partculas que se
encontra no topo da hierarquia.
3.1.1 Criando as estruturas de dados de um sistema de partculas
3.1.1.1 PartculaA partcula o elemento fundamental porm simples, de um sistema de partculas,
Lander(1998) mostra alguns atributos que uma partcula pode ter:
Posio atual
Posio anterior
Velocidade inicial
Acelerao
Tamanho inicial
Cor inicial
Cor final
Transparncia inicial (Valor alpha)
Tempo de vida
Figura 11: Arquitetura do sistema de partculas implementado nesse trabalho.
-
40
Primeiramente, deve-se saber a posio de uma partcula no espao, ou seja, a posio
nos eixos x, y e z das coordenadas cartesianas, caso haja desejo de produzir efeitos com a
partcula, tem-se a posio anterior que torna possvel esse efeito. A posio dividida em x,
y e z, portanto um vetor aqui se faz presente.
Tem os atributos de velocidade e acelerao que diz respeito a movimentao das
partculas, a velocidade indica a quantidade de movimento da partcula enquanto a acelerao
indica a taxa de aumento da velocidade, ou seja, a velocidade adiciona a posio e a
acelerao adiciona a velocidade, adiante nesse trabalho ser mostrado como a posio,
velocidade e a acelerao se interagem entre si para que a movimentao da partcula se torne
realista, segundo o padro da fsica clssica. A velocidade e a acelerao so divididas em
trs: x, y e z.
O tamanho do ponto (ou espessura da linha) que ir representar a partcula, pode
tambm dizer o tamanho da textura utilizada para representar a partcula. A cor inicial e final
indicam quais so as cores que a partcula dever possuir.
A partcula pode, em teoria, possuir qualquer forma, sempre lembrando que quanto
mais complexa for essa forma, mais difcil ser de renderizar as milhares de partculas na tela.
O tempo de vida indica quantos quadros da animao a partcula estar visvel, aps
esse perodo de tempo, a partcula ser reiniciada ou removida do sistema. Esse mecanismo de
vida e morte pode ser implementada de acordo com a transparncia da partcula, quando
estiver totalmente transparente, ela pode ter seu tempo de vida esgotado e ento excluda do
sistema.
Na programao orientada a objeto, define-se tambm o comportamento do objeto,
que representada por mtodos (funes na programao estruturada). Dentre os
comportamentos bsicos que uma partcula pode possuir, pode-se citar: A movimentao e a
renderizao. Uma partcula se movimenta de acordo com a fsica implementada, ou seja,
uma fsica que simula a chuva para partculas que simulam uma chuva, e ento renderizada
de acordo com a sua forma e cor na posio desejada.
Mas existe um problema: Caso a rea de criao das partculas seja restrita e tambm
se houver uma rea de coliso, como as partculas iro saber, se essas informaes esto na
classe 'Sistema de partculas'? E as foras que atuam sobre as partculas, cujo valor tambm se
encontram na classe de hierarquia superior? Por isso, os mtodos que implementaro o
-
41
movimento das partculas e tambm a renderizao se encontraro na classe de hierarquia
superior seguinte.
Dado todas essas definies, tem-se ento o objeto 'Partcula', que em programao
orientada a objeto define-se por classe 'Partcula', para a representao de vrios objetos com
atributos de valores diferentes. A figura 12 mostra uma classe 'Partcula' utilizando a
linguagem UML, utilizada para modelagem de softwares:
A classe mais simples da arquitetura proposta nesse trabalho est definida, o presente
trabalho ento ir continuar com a modelagem do sistema, mostrando agora a classe 'Sistema
de partculas' que ir atualizar e renderizar todas as partculas em seu domnio assim como
oferecer as foras que agem no sistema.
3.1.1.2 Sistema de partculas
A prxima classe na modelagem do sistema de partculas ser aquela que controlar as
partculas em si. O nome dessa classe foi dada assim porque ela mesma j um sistema de
partculas por si, ou seja, partculas que se movimentam e so renderizadas com aparncia de
fumaa por exemplo, so um sistema de partculas, outro que simula neve tambm um
sistema de partculas.
Essa classe ser responsvel pela criao, inicializao, atualizao e renderizao das
partculas e tambm a mais complexa de todo o sistema, porque ela quem faz praticamente
todo o trabalho, mais adiante ser explicado em detalhes como que todas essas atividades so
executadas, por ora, apenas ser mostrado a classe e sua estrutura.
Figura 12: Classe que representa uma partcula.
-
42
Dentre os atributos dessa classe cita-se:
Lista ligada ou um array para guardar as partculas
Vetor contendo as componentes de fora nos eixos x, y e z
Textura que pode ser usada para dar aparncia s partculas
Nmero de partculas vivas no sistema
rea ou espao de criao das partculas
Variveis que guardam as variaes dos atributos das partculas
Nmero de identificao
A lista ligada necessria para guardar todas as partculas do sistema, um array (ou
vetor) pode ser usado, mas Lander(1998) diz que uma lista ligada faz com que fique muito
mais fcil de excluir e incluir partculas, alm de otimizar muito o processo de atualizao, j
que muitas partculas podem estar morrendo e nascendo o tempo todo.
O vetor 3D contendo as foras em x, y e z responsvel por guardar o valor da fora
que ser exercida nas partculas, essa fora pode ser a gravidade, resistncia do vento ou
qualquer outro fator fsico que o desenvolvedor decidir implementar. Essas foras possuem
cada uma, frmulas prprias para que consiga seus valores num dado tempo. Na seo 3.3 ir
ser explicado em detalhes essa parte.
A textura pode ser usada para dar aparncia s partculas, por exemplo, pode ser usado
uma textura de fumaa para as partculas, assim todas elas tero a mesma aparncia e assim
daro um efeito mais realista.
O nmero de partculas vivas diz se o sistema ainda est executando ou no, quando
esse nmero for zero, o sistema estar dizendo que ele j fez o seu trabalho e que pode ser
excludo.
O atributo que diz respeito a rea ou espao de criao de partculas, responsvel
por colocar todas as partculas em um determinado lugar, e esse lugar pode ser um objeto de
qualquer forma, desde de um ponto at um cubo, esfera ou outro objeto.
As variveis que guardam as variaes dos atributos que so responsveis pela
aleatoriedade da aparncia das partculas, que feita por processos estocsticos, explicadas na
-
43
seo 3.2.1.2.
O ltimo atributo apenas um nmero inteiro para a posterior remoo do sistema que
se encontra no gerenciador (mostrado mais a frente), assim, quando o usurio quiser que um
determinado sistema seja removido de cena, basta indicar esse nmero para o gerenciador, e
ento o mesmo ir remov-lo.
Aps determinar os atributos, os mtodos devem agora ser definidos, e dentre os
principais mtodos podemos citar:
Criar partculas dentro da rea de criao definida
Inicializar os atributos de todas as partculas criadas com valores definidos
estocasticamente e/ou aleatrios
Calcular as foras que agem nas partculas.
Atualizar o movimento das partculas e verificar se excederam seus tempos de vida
Renderizar as partculas
Retornar o nmero de identificao
O primeiro mtodo diz respeito s posies em que as partculas nascero, se a rea foi
definido como um quadrado, logo as partculas nascero dentro do quadrado em posies
aleatrias, se o objeto que for usado como rea de criao for uma esfera, as partculas
nascero em posies aleatrias dentro da esfera. Teoricamente pode ser usado qualquer
objeto 2D ou 3D para definir a rea de criao de partculas.
O segundo mtodo o que inicializa os atributos das partculas como posio,
velocidade, etc. Os valores so calculados usando processos estocsticos. Alguns atributos
podem ser definidos com valores comuns (no aleatrios). Cada sistema de partcula deve
definir todos esses critrios.
O terceiro mtodo calcula as foras que agiro nas partculas, foras essas
provenientes da fsica clssica newtoniana como gravidade, resistncia do ar, e qualquer outra
que o programador definir, segundo as frmulas de cada uma.
O quarto e quinto mtodo so responsveis, respectivamente, por atualizar a dinmica
das partculas, seus tempos de vida e renderiz-las na tela, lembrando que quanto mais
-
44
partculas existir no sistema, mais demorado ser para que esses mtodos executem as suas
tarefas.
O sexto e ltimo mtodo retorna o nmero de identificao passado por parmetro na
criao do sistema de partculas.
Na linguagem de modelagem UML a classe 'Sistema de Partculas' fica assim:
Percebe-se que essa classe abstrata, ou seja, o programador dever, por meio de
herana, implementar uma verso da classe de acordo com cada sistema de partculas, se o
sistema for a simulao de chuva, logo ele dever o implementar cada mtodo de modo que as
partculas se comportem como chuva.
A classe mais complexa da hierarquia est definida, seu funcionamento, assim como
de todo o sistema ser explicado na seo 3.2.
3.1.1.3 Gerenciador de Sistemas de partculas
No topo da hierarquia se encontra a classe 'Gerenciador de Sistemas de Partculas', ela
responsvel por atualizar todos os sistemas que esto nela, alm de receber novos sistemas e
excluir as que possuem apenas partculas mortas. Novos sistemas de partculas podem ser
includos, mesmo aps todo o sistema estar implementado e funcionando.
A atividade de excluso do gerenciador consiste em examinar e excluir os sistemas de
partculas automaticamente em vez de deixar isso para o usurio, e isso ocorre quando um
sistema de partculas morre (todas as suas partculas excedem seus tempo de vida). O
Figura 13: Classe que representa um sistema de partculas.
-
45
gerenciador verificaria esse acontecimento e ento retiraria da memria o sistema morto.
Definido a misso da classe, abaixo mostrado o nico atributo da classe 'Gerenciador
de Sistemas de Partculas':
Lista ligada ou um array para guardar os sistemas de partculas
Como essa classe apenas ser uma classe gerenciadora, o nico atributo de que ela
precisa uma lista que contenha todos os sistemas de partculas que o usurio precisa para a
sua cena. Os mtodos so os seguintes:
Adicionar um sistema de partculas
Remover um sistema de partculas
Atualizar os sistemas de partculas
Renderizar os sistemas de partculas
Encerrar gerenciador de sistemas de partculas
Verificar a existncia de um sistema de partculas
O primeiro mtodo adiciona um sistema ao gerenciador, essa adio pode ser por meio
de parmetro, como por exemplo:
'gerenciador.adicionaSistemaParticula(new SistemaFumaa())'
Depois disso, o sistema de partculas que simula fumaa (caso do exemplo) estar
guardado na lista e ser atualizado quando for chamado o mtodo de atualizao do
gerenciador. Pode-se notar que um sistema pode ser adicionado a qualquer momento, mesmo
que o gerenciador esteja atualizando os sistemas j presentes na lista, isso permite que vrios
efeitos sejam adicionados em cena em tempo real, tornando toda a cena mais realista.
O segundo mtodo segue o mesmo padro que o segundo, mas apenas remove um
sistema de acordo com a sua chave de identificao (passado por parmetro na criao de um
Sistema de partculas). A remoo pode acontecer em tempo real tambm.
O terceiro e quarto mtodo atualiza os sistemas de partculas (chamando o mtodo de
atualizao de cada um) e os renderiza (chamando o mtodo de renderizao de cada um)
respectivamente. Note uma importante importante caracterstica da programao orientada a
objeto sendo usada aqui, que o polimorfismo, isso acontece porque cada sistema de
-
46
partculas possui comportamento prprio que so implementados por meio de subclasses da
classe 'Sistema de Partculas', no entanto, o gerenciador apenas ir chamar o mtodo 'atualizar'
e ento cada sistema ir se comportar da maneira que foi programada.
O quinto mtodo encerra todos os sistemas de partculas que porventura estejam ativos
no gerenciador liberando a memria usada por eles.
E o ltimo verifica se um determinado sistema de partculas ainda est ativo dentro do
sistema.
A classe 'Gerenciador de Sistemas de Partculas' fica definida assim na linguagem
UML:
Todo o sistema ir funcionar tomando em considerao a modelagem da figura 15 (Os
atributos e mtodos foram suprimidos para manter a simplicidade):
Figura 14: Classe que representa um gerenciador de sistemas de partculas.
-
47
A figura 15 indica que: Um gerenciador possui nenhum ou muitos Sistemas de
Partculas e que este possui nenhuma ou muitas partculas. Esse modelo representa fielmente
a abordagem desse trabalho em relao ao funcionamento de todo o sistema, porque oferece
uma caracterstica orientada a objeto, flexvel e facilmente extensvel, embora o autor no
garante que essa modelagem seja a melhor ou nica.
Com as trs classes definidas e tambm as suas relaes, tem-se ento o Sistema de
partculas (agora considerando o sistema como um todo) modelado, agora falta explicar como
ser o funcionamento do sistema e como as trs classes conversam entre si, assim como ser
explicado a implementao dos mtodos mais importantes do sistema, que possuem influncia
definitiva.
Figura 15: Relao entre as trs classes principais do sistema.
-
48
3.2 Execuo do sistema de partculas
A prxima etapa no entendimento e implementao do Sistema de partculas a sua
execuo, com mais detalhes. Na fundamentao terica desse trabalho (seo 2), foi descrito
com poucas palavras como que as partculas so geradas e inicializadas, tambm foi explicado
como que o sistema inteiro funciona, por isso, o presente ttulo ir apenas se aprofundar no
que j foi descrito.
Antes de explicar em detalhes o funcionamento, deve-se saber em que contexto da
computao grfica um Sistema de Partculas se encontra, e esse contexto se chama animao.
Parent(2002) diz que a animao fazer mover, algo que por si mesmo no se move,
como um boneco de madeira ou um desenho num papel e tambm diz que todo objeto grfico
representado no computador que possua variveis pode ser animado.
A estrutura usada para animao lembra muito aquela usada por animaes
tradicionais, que consistiam em sequncias de papis. Outro contexto a ser visto que um
Sistema de partculas no s uma animao, mas tambm uma animao onde a interao
com o usurio faz com que este mude o jeito que a animao executa, isso se deve ao fato de
que o usurio deseja mudar as regras de criao ou movimento das partculas a qualquer
momento, por isso, deve-se pensar que um Sistema de Partculas no s uma animao onde
no h interao com o usurio (como num filme animado por exemplo), o usurio influencia
diretamente o decorrer da animao.
Dalmau(2004) mostra o mecanismo de um loop usado frequentemente em jogos, que
se encaixa perfeitamente no sistema que esse trabalho est implementado. A figura 16 mostra
como funciona esse loop:
-
49
O loop sempre ir passar pela parte de atualizao da lgica do programa e sua
renderizao, depois de passado esses passos, o programa dorme um pouco para que outros
programas (ou partes de programas) possam rodar (como exemplo, a interface, caso existir).
O Sistema de partculas desse trabalho ir seguir esse esquema: Primeiro ele
atualizado e depois renderizado.
Toda a lgica do sistema feita na parte de atualizao enquanto s a parte de
renderizao feita depois. A figura 17 mostra a figura 16 de forma atualizada:
Figura 16: Funcionamento de um loop responsvel por manter um jogo ou uma animao rodando.
-
50
Essa seo ir explicar cada uma das principais partes que devem ser atualizadas no sistema.
3.2.1 Gerao das partculas
Em primeiro lugar, deve-se definir como ser a criao de todo o sistema e tambm a
inicializao dos atributos das partculas, e tudo isso comea com a instanciao das classes
que pertencem estrutura do sistema citados nesse trabalho, isso deve acontecer antes e
durante o loop citado anteriormente.
Dentre as classes que devem ser instanciadas antes do loop comear cita-se:
'Gerenciador de Sistema de Partculas'. As classes que devem ser instanciadas durante o loop
cita-se: No mnimo uma classe 'Sistema de Partculas'.
As partculas em si sero geradas e inicializadas pela classe diretamente acima destas
na hierarquia, j que esta ltima contm todos os parmetros necessrios para a inicializao.
J de conhecimento do leitor que a classe 'Partcula' no possui mtodos, isso quer
dizer que a classe 'Sistema de Partculas' far todo o trabalho, cabendo 'Partcula' apenas
Figura 17: Loop atualizado, incluindo a atualizao do sistema de partculas implementado nesse trabalho.
-
51
guardar os valores de seus atributos para que sejam usados pela classe superior a eles. Sendo
assim, nessa seo ser explicado como que a classe superior classe 'Partcula' executa as
suas duas primeiras atividades (ou mtodos) citadas na seo 3.1.1.2, que so referentes
criao e inicializao das partculas.
3.2.1.1 Criando partculas dentro de nascedouros
Quando uma classe 'Sistema de Partculas' inicializada, ela deve comear a criar
partculas para comear a executar a animao na tela, para isso ela faz duas coisas: Instancia
vrias vezes a classe 'Partcula' e calcula valores iniciais para os atributos das partculas.
Essas so as duas atividades que a classe Sistema de Partculas faz quando cria uma
partcula, e nesse trabalho seguido o modelo que Reeves(1983) descreve em seu artigo:
1. As partculas so inicializadas dentro de um nascedouro.
2. Valores iniciais so calculados por meio de processos estocsticos.
A presente seo ir explicar como fazer as partculas nascerem dentro dos
nascedouros, enquanto a prxima seo ir explicar os processos estocsticos.
Por nascedouro, entende-se como a rea dentro das coordenadas cartesianas em que
uma partcula pode nascer. Um nascedouro pode, teoricamente, possuir qualquer forma, pode
ser um cubo, um crculo ou at um ponto. Reeves(1983) diz que um sistema de partculas
possui uma rea de nascimento que define uma regio a respeito de sua origem onde novas
partculas so aleatoriamente colocadas, e ele tambm diz que reas de nascimento mais
complicadas e baseadas nas leis da natureza ou em atratores caticos no tem sido
implementados, apenas imaginados.
Ou seja, no trabalho que ele estava fazendo (o filme: Star Trekk 2), Reeves diz que
outras formas de gerao (nascedouros) foram imaginadas mas no implementadas, isso
indica que o programador do sistema pode implementar qualquer nascedouro que lhe convier,
sendo assim, nesse trabalho esta implementado os seguintes nascedouros:
Ponto: A posio inicial de todas as partculas a mesma, todas elas nascem de um
ponto no espao.
-
52
Plano: As partculas nascem aleatoriamente em qualquer ponto dentro de um plano em
x e z.
Disco: As partculas nascem aleatoriamente em qualquer ponto dentro de um disco em
x e z.
Cubo: As partculas nascem aleatoriamente em qualquer ponto dentro de um cubo nas
coordenadas x, y e z.
A seguir ser mostrado como gerar valores para as posies das partculas para que os
mesmos estejam dentro do nascedouro citado.