Bug 1323

Summary: Enhance the math utilities to support more operations on vectors, matrices and quaternions
Product: [JogAmp] Jogl Reporter: Julien Gouesse <gouessej>
Component: openglAssignee: Sven Gothel <sgothel>
Status: UNCONFIRMED ---    
Severity: minor    
Priority: P4    
Version: tbd   
Hardware: All   
OS: all   
Workaround: ---

Description Julien Gouesse 2016-09-27 12:02:17 CEST
JOGL has some math utilities in the packages "com.jogamp.opengl.math" and "com.jogamp.opengl.math.geom" and "com.jogamp.graph.geom". The size of these APIs is very small but some essential features are missing. It tends to encourage some developers to use third party libraries whereas JOGL could satisfy their needs by reasonably increasing the complexity of the APIs.

Moreover, there is some code duplication between projects strongly tied to JogAmp, for example Java3D (Vecmath) and JogAmp's Ardor3D Continuation (own vecmath implementation). Using a single common math API would help several engines to use a subset of JogAmp's Ardor3D Continuation (ardor3d-math + ardor3d-savable + a subset of ardor3d-extras) to load 3D models or to move the importers into jogl-utils and to use them in all JogAmp scenegraph APIs.

There are several sources of inspiration:
- elect's JGLM
- Vecmath
- ardor3d-math

The missing features are (non exhaustive list):
- matrices containing 2, 3 or 4 integer, float and double values
- vectors containing 2, 3 or 4 integer, float and double values
- operations that apply on the current "local" object (this) and that create another one (exactly like ardor3d-math)
- lerp, slerp, simplex noise, ...
Comment 1 Julien Gouesse 2016-09-27 12:32:49 CEST
- pre-multiplication of quaternions
- Gram-Schmidt orthogonalization: https://github.com/ricardolpd/Ardor3D/commit/7aff0a370fef909a11a5eed9591d6ab7205cd089
Comment 2 Julien Gouesse 2016-09-27 12:35:20 CEST
- component-wise multiplication
- operations to convert from/to NIO buffers
- bitangent
Comment 3 Julien Gouesse 2016-09-27 12:41:15 CEST
- adjugate: http://en.wikipedia.org/wiki/Adjugate_matrix
- quaternion inversion (!= conjugate)