Maven module :un.api : api-math :
Class : un.impl.math.Quaternions
Extends/Implements : -
Subclasses : -

author  Johann Sorel


Variables : -
Functions : add, subtract, dot, normalize, conjugate, scale, length, multiplyQuaternion, multiplyVector, inverse, lerp, slerp, fromAngle, toMatrix, toAxisAngle



public double[] add (double[] quaternion, double[] other, double[] buffer)

public double[] subtract (double[] quaternion, double[] other, double[] buffer)

public double dot (double[] q1, double[] q2)


Normalize quaternion, result is stored in buffer.
if buffer is null, a new quaternion is created.
Arrays must have the same size
param  quaternion input quaternion
param  buffer result buffer, can be null
return  normalized quaternion
public double[] normalize (double[] quaternion, double[] buffer)

public double[] conjugate (double[] quaternion, double[] buffer)

public double[] scale (double[] quaternion, double scale, double[] buffer)

public double length (double[] quaternion)

public double[] multiplyQuaternion (double[] l, double[] r, double[] buffer)

public double[] multiplyVector (double[] q, double[] v, double[] buffer)

public double[] inverse (double[] values, double[] buffer)


Linear quaternion interpolation.
param  q1 first quaternion
param  q2 second quaternion
param  ratio : 0 is close to first vector, 1 is on second vector
param  buffer result buffer, not null
return  interpolated quaternion
public double[] lerp (double[] q1, double[] q2, double ratio, double[] buffer)


Spherical linear interpolation.
param  q1 first quaternion
param  q2 second quaternion
param  ratio : 0 is close to first vector, 1 is on second vector
param  buffer result buffer, can be null
return  interpolated quaternion
public double[] slerp (double[] q1, double[] q2, double ratio, double[] buffer)


Create quaternion from axe and angle.
Source : http://jeux.developpez.com/faq/math/?page=quaternions#Q56
param  axis rotation axis
param  angle rotation angle
param  buffer result buffer
return  quaternion, never null
public double[] fromAngle (Tuple axis, double angle, double[] buffer)


Quaternion to matrix.
Source : http://jeux.developpez.com/faq/math/?page=quaternions#Q54
param  quaternion input quaternion
param  matrix result buffer, can be null
return  result matrix
public double[][] toMatrix (double[] quaternion, double[][] matrix)


param  quaternion must be normalized
param  axis axis will be written in this buffer
return  angle in radians
public double toAxisAngle (double[] quaternion, double[] axis)