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 Oliveira Corte Real 2008-11-28