O próximo passo foi introduzir as bibliotecas ODE e CppUnit. Com isso, as
classes Environment
(e suas subclasses) e Molecule
perderam o
comportamento físico, passando apenas a adaptadoras entre as diversas
bibliotecas utilizadas. As subclasses de Environment
passaram a ter
o papel de inserir no ambiente físico gerenciado pela ODE os planos de
colisão necessários para modelar a forma do ambiente de difusão desejada.
A integração com a biblioteca CppUnit não trouxe muitos problemas. Entretanto,
a biblioteca ODE exigiu o ajuste de alguns parâmetros referentes à
conservação de energia, uma vez que, mesmo definindo o coeficiente de
elasticidade das colisões para , ou seja, definindo que as colisões
deveriam ser perfeitamente elásticas, havia perda de energia no sistema.
Foi necessário definir um coeficiente de elasticidade maior do que
para
que houvesse conservação de energia, excetuando-se erros de arredondamento
menores do que
unidades de energia.
Outro problema relacionado à utilização da biblioteca ODE foi a necessidade
de modelar os ambientes de difusão como intersecção de planos. Até a
introdução desta biblioteca, a borda do ambiente esférico era calculada com
exatidão, por meio da equação implícita da esfera:
, onde
é o raio da esfera. Com a introdução
da biblioteca, foi necessário utilizar a seguinte parametrização:
![]() |
(6) |
A partir desta parametrização, é possível calcular o vetor normal à esfera em um ponto qualquer de sua superfície. Com o vetor normal, define-se, então, um plano. Porém, como o número de planos necessários para representar uma esfera com perfeição é infinito e não é possível inserir infinitos planos na memória do computador, faz-se necessário aproximar a esfera por um número finito de planos. Para tanto, foi utilizado o seguinte algoritmo:
e
determinam o número de planos que serão utilizados para
aproximar a esfera. Quanto maiores seus valores, mais planos são utilizados.
Feita a integração com as bibliotecas, o foco foi melhorar a exibição da simulação. Neste ponto, foram introduzidas, gradualmente, diversas funcionalidades. A primeira delas foi permitir que o usuário escolhesse as cores das moléculas na tela.
Luiz Fernando 2008-12-21