monografia v1.0 - sistema de partículas

86
UNIVERSIDADE FEDERAL DE MATO GROSSO COORDENAÇÃO DE ENSINO DE GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO ESTUDO E DESENVOLVIMENTO DE UM SISTEMA DE PARTÍCULAS APLICANDO A PROGRAMAÇÃO ORIENTADA A OBJETOS RODRIGO VIEIRA CHAVES CUIABÁ - MT 2009

Upload: rodrigo

Post on 26-Sep-2015

225 views

Category:

Documents


1 download

DESCRIPTION

Descrição de um sistema de partículas utilizando o método numérico Runge-Kutta.

TRANSCRIPT

  • 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.