Para facilitar a descrição, dividiu-se a a migração do VisciPower em etapas. Informações sobre a versão original do VisciPower em:
http://www.dca.fee.unicamp.br/projects/vdx/siqueira/index.html
O código foi estudado e verificou-se uma clara separação entre as funções de desenho e o restante do programa. No entanto, como as funções faziam acesso direto a estruturas globais, observou-se que seria necessário estruturar melhor essas funções. As novas funções passaram a ter como parâmetro ponteiros para as estruturas necessárias, ao invés de fazer acesso direto às variáveis globais. Essas novas funções foram então colocadas em um arquivo (vpAux.cpp): este arquivo é atualmente o arquivo que contém a grande maioria das chamadas às funções da biblioteca OpenGL. Pode ser considerado a fonte das primitivas utilizadas.
Para efetivar a migração de GLUI para OpenGL, foi necessário estudar as funções e classes equivalentes entre as duas bibliotecas. Apesar da GLUI ser uma biblioteca feita utilizando C++, o código do VisciPower não utiliza recursos da linguagem. O uso da GLUI resumiu-se a criação/organização das janelas e tratamentos de eventos associados aos widgets. Interessante notar que a GLUI é baseada na biblioteca GLUT, o que já limita bastante seus recursos.
inicialmente foi utilizada a ferramenta wxGlade para a confecção das janelas. Nesta etapa, por falta de familiarização com o VisciPower, foram utilizadas as imagem do programa em execução como modelo. É importante notar que nesta tarefa de migração da interface gráfica foi considerado um novo design para as janelas, somente a migração de sistemas.
A idéia inicial era deixar a organização interface gráfica independente do restante do programa. Para isso, os arquivos gerados pelo wxGlade praticamente não eram modificados, de modo que modificações na interface utilizando o wxGlade não necessitassem de profundas modificações no código do programa. Cada janela era representada utilizando classe, sendo cada uma gravada num arquivo com o mesmo nome da classe. Estas classes continham métodos virtuais de tratamento de eventos, os quais implementados numa classe derivada.
No entanto, como o programa wxGlade ainda pode ser considerado completo, principalmente no que diz respeito ao tratamento de eventos e geração do código em C++ (wxGlade tem como alvo a linguagem Python) das janelas, o seu uso se restringiu ao layout inicial. Após algum tempo, com a experiência adquirida com o tempo, pequenos ajustes foram sendo introduzidos nos layouts, chegando à versão atual. Os arquivos e as classes também foram unificados, eliminando a necessidade de sobrescrever os métodos virtuais.
Com as devidas adaptações na notação e uso das variáveis, o desenho destas janelas de visão não foi um problema. No entanto, interpretar o tratamento de eventos do original representou uma certa dificuldade, principalmente pelo uso generalizado das variáveis globais: várias variáveis eram acessadas por janelas diferentes, o que dificultou entender quais seriam os efeitos que a mudança de uma variável significaria para o programa como um todo.
Os gráficos da versão original apresentam várias limitações, sendo que grande parte delas foi herdada nessa nova versão. A principal melhoria foi o uso de caixas limitantes no posicionamento do texto, o que permite que os gráficos possam ser redimensionados sem distorcê-los. Um dos problemas herdados que ainda persiste é que, quando algum valor está fora do esperado (por exemplo, se o usuário colocar um valor de geração de potência absurdamente alto), dados podem ser plotados fora da área reservada.
A biblioteca Meschach aparentemente não é mais atualizada. Com as mudanças que ocorreram nas versões (nem tão) novas do GCC, o código teve que ser adaptado. Foi encontrado um patch (já meio antigo) para corrigir alguns problemas, mas ainda assim ocorriam erros. A tentativa de solução foi pegar a versão que estava instalada no laboratório: esta versão compilada sem problemas, mas apresentava problemas no momento do link.
Foi assim que o suporte à simulação do VisciPower ficou por um longo tempo desativado. Numa das etapas de desenvolvimento do programa de testes dos algoritmos de geração de diagramas unifilares, durante o estudo da Boost Graph Library, surgiu a oportunidade de migrar da biblioteca Meschach para a uBLAS, que faz parte da Boost, biblioteca que é usada no programa de testes e que será conseqüentemente usada quando um dos algoritmos for integrada ao VisciPower.
O uso da Meschach se resumia a: criação da estrutura das matrizes na memória, preenchimento, inversão e multiplicação de matrizes. A maioria, com excessão da inversão de matrizes, já é disponibilidade na uBLAS. A inversão foi realizada utilizando uma das funções encontrada pela Internet. Os testes com o VisciPower assim alterdo não indicaram diferença perceptível da eficiência do programa.
Para facilitar a navegação nos contextos de desenho OpenGL, foi implementado a função de "panning" para que o usuário possa "arrastar a tela" e posicionar a imagem de acordo com sua preferência. Apesar de funcional, a implementação ainda precisa de ajustes. O uso das teclas de navegação continua ativado.