Projeto de visualizador educacional de transformações lineares para as disciplinas de Programação Orientada a Objetos e Computação Gráfica.
Conceitos de Álgebra Linear normalmente são apresentados de maneira abstrata, dificultando a compreensão intuitiva de matrizes e transformações lineares. Muitos estudantes conseguem realizar operações algébricas, porém não compreendem o impacto visual das transformações sobre objetos no plano.
Tendo em vista essa problemática, o projeto propõe o desenvolvimento de uma ferramenta educacional interativa voltada ao ensino de Álgebra Linear. O sistema permite a visualização dinâmica de transformações lineares em objetos bidimensionais, explorando conceitos como rotação, escala, reflexão, composição de matrizes e interpretação geométrica do determinante.
A proposta segue integralmente a arquitetura definida para o projeto interdisciplinar, com separação em três camadas: aplicação Java, integração JNI e motor gráfico em C/C++ com OpenGL.
- Disponibilizar uma plataforma educacional para visualização interativa de transformações lineares em 2D utilizando Java, JNI, C/C++ e OpenGL;
- Implementar transformações lineares em tempo real;
- Demonstrar visualmente os efeitos do determinante;
- Permitir manipulação interativa de matrizes;
- Integrar aplicação Java com motor gráfico em C/C++;
- Aplicar princípios de POO e arquitetura multicamadas;
- Utilizar OpenGL para renderização 2D.
Projeto/
│
├── headers/
├── lib/
├── native/
│ └── motor.cpp
├── src/
│ ├── controller/
│ ├── graphics/
│ ├── model/
│ └── view/
└── README.md
Existem duas formas de executar o projeto:
- Desenvolvimento: clonar o repositório, configurar o ambiente e compilar o código-fonte conforme as instruções deste documento.
- Aplicação pronta: baixar a versão disponibilizada na seção Releases do repositório. Nesse caso, não é necessário instalar o JDK nem compilar o projeto.
O projeto foi desenvolvido e testado com o seguinte ambiente:
- Java JDK 21 (olhar a seção 'Instalação do JDK')
-
javac 21.0.11
- GCC (MSYS2) (olhar a seção 'instalçao do MSYS2')
-
g++ (Rev2, Built by MSYS2 project) 14.2.0
- Windows 10/11
- MSYS2 utilizando o ambiente MINGW64
Importante: utilize um JDK (não apenas o JRE), pois o projeto utiliza JNI (Java Native Interface).
Verifique a instalação:
javac --versionResultado esperado:
javac 21.0.11
Também confirme que a variável JAVA_HOME aponta para a instalação do JDK.
Exemplo:
C:\Program Files\Eclipse Adoptium\jdk-21.0.11.10-hotspot
Instale o MSYS2 e utilize o ambiente MINGW64. Verifique o compilador:
g++ --versionResultado esperado:
g++ (Rev2, Built by MSYS2 project) 14.2.0
Abra o terminal MSYS2 MINGW64 e instale as dependências:
pacman -S mingw-w64-x86_64-glfw
pacman -S mingw-w64-x86_64-glewImportante: Essas bibliotecas serão utilizadas pelo motor gráfico em C++.
javac -h headers -d build src/**/*.javaEste comando:
- compila as classes Java;
- gera os arquivos de cabeçalho JNI na pasta
headers; - grava os arquivos
.classna pastabuild.
g++ -shared -o lib/motor.dll native/motor.cpp \
-Iheaders \
-I"$JAVA_HOME/include" \
-I"$JAVA_HOME/include/win32" \
-I"/c/glew/include" \
-I"/c/glfw/include" \
-L"/c/glew/lib/Release/x64" \
-L"/c/glfw/lib-mingw-w64" \
-L"$JAVA_HOME/lib" \
-lglew32 \
-lglfw3 \
-lgdi32 \
-luser32 \
-lshell32 \
-lopengl32 \
-ljawtEsses caminhos devem ser adaptados conforme a instalação do usuário.
Esse comando gera a biblioteca nativa:
lib/motor.dll
java -Djava.library.path=lib -cp build view.MainO parâmetro
-Djava.library.path=lib
informa ao Java onde localizar a biblioteca motor.dll.
- O projeto utiliza JNI para comunicação entre Java e C++.
- O motor gráfico é compilado como uma DLL (
motor.dll). - A interface é desenvolvida em Java (Swing).
- O motor gráfico utiliza OpenGL através das bibliotecas GLEW e GLFW.
- Recomenda-se utilizar a mesma versão do JDK, do MSYS2 e das bibliotecas para evitar incompatibilidades durante a compilação.