toxi.geom
Class Quaternion

java.lang.Object
  extended by toxi.geom.Quaternion

public class Quaternion
extends java.lang.Object

Quaternion implementation with SLERP based on http://is.gd/2n9s


Field Summary
static float DOT_THRESHOLD
           
 float w
           
 float x
           
 float y
           
 float z
           
 
Constructor Summary
Quaternion()
           
Quaternion(float w, float x, float y, float z)
           
Quaternion(float w, ReadonlyVec3D v)
           
Quaternion(Quaternion q)
           
 
Method Summary
 Quaternion add(Quaternion q)
           
 Quaternion addSelf(Quaternion q)
           
 Quaternion copy()
           
static Quaternion createFromAxisAngle(ReadonlyVec3D axis, float angle)
          Creates a Quaternion from a axis and a angle.
static Quaternion createFromEuler(float pitch, float yaw, float roll)
          Creates a Quaternion from Euler angles.
static Quaternion createFromMatrix(Matrix4x4 m)
          Creates a quaternion from a rotation matrix.
 float dot(Quaternion q)
          Computes the dot product with the given quaternion.
static Quaternion getAlignmentQuat(ReadonlyVec3D dir, ReadonlyVec3D forward)
          Constructs a quaternion that rotates the vector given by the "forward" param into the direction given by the "dir" param.
 Quaternion getConjugate()
          Computes this quaternion's conjugate, defined as the same w around the inverted axis.
 Matrix4x4 getMatrix()
          Deprecated. use toMatrix4x4() instead
 Quaternion getNormalized()
          Computes normalized version of this quaternion.
 Quaternion identity()
           
 Quaternion interpolateTo(Quaternion target, float t)
          Spherical interpolation to target quaternion (code ported from GamaSutra)
 Quaternion interpolateTo(Quaternion target, float t, InterpolateStrategy is)
           
 Quaternion interpolateToSelf(Quaternion target, float t)
          Spherical interpolation to target quaternion (code ported from GamaSutra)
 Quaternion interpolateToSelf(Quaternion target, float t, InterpolateStrategy is)
          Uses spherical interpolation to approach the target quaternion.
 float magnitude()
           
 Quaternion multiply(Quaternion q2)
           
 Quaternion normalize()
           
 Quaternion scale(float t)
           
 Quaternion scaleSelf(float t)
           
 Quaternion set(float w, float x, float y, float z)
           
 Quaternion set(float w, Vec3D v)
           
 Quaternion set(Quaternion q)
           
 Quaternion sub(Quaternion q)
           
 Quaternion subSelf(Quaternion q)
           
 float[] toArray()
           
 float[] toAxisAngle()
          Converts the quaternion into a float array consisting of: rotation angle in radians, rotation axis x,y,z
 Matrix4x4 toMatrix4x4()
          Converts the quat to a 4x4 rotation matrix (in row-major format).
 Matrix4x4 toMatrix4x4(Matrix4x4 result)
           
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

DOT_THRESHOLD

public static final float DOT_THRESHOLD
See Also:
Constant Field Values

x

public float x

y

public float y

z

public float z

w

public float w
Constructor Detail

Quaternion

public Quaternion()

Quaternion

public Quaternion(float w,
                  float x,
                  float y,
                  float z)

Quaternion

public Quaternion(float w,
                  ReadonlyVec3D v)

Quaternion

public Quaternion(Quaternion q)
Method Detail

createFromAxisAngle

public static Quaternion createFromAxisAngle(ReadonlyVec3D axis,
                                             float angle)
Creates a Quaternion from a axis and a angle.

Parameters:
axis - axis vector (will be normalized)
angle - angle in radians.
Returns:
new quaternion

createFromEuler

public static Quaternion createFromEuler(float pitch,
                                         float yaw,
                                         float roll)
Creates a Quaternion from Euler angles.

Parameters:
pitch - X-angle in radians.
yaw - Y-angle in radians.
roll - Z-angle in radians.
Returns:
new quaternion

createFromMatrix

public static Quaternion createFromMatrix(Matrix4x4 m)
Creates a quaternion from a rotation matrix. The algorithm used is from Allan and Mark Watt's "Advanced Animation and Rendering Techniques" (ACM Press 1992).

Parameters:
m - rotation matrix
Returns:
quaternion

getAlignmentQuat

public static Quaternion getAlignmentQuat(ReadonlyVec3D dir,
                                          ReadonlyVec3D forward)
Constructs a quaternion that rotates the vector given by the "forward" param into the direction given by the "dir" param.

Parameters:
dir -
forward -
Returns:
quaternion

add

public Quaternion add(Quaternion q)

addSelf

public Quaternion addSelf(Quaternion q)

copy

public Quaternion copy()

dot

public float dot(Quaternion q)
Computes the dot product with the given quaternion.

Parameters:
q -
Returns:
dot product

getConjugate

public Quaternion getConjugate()
Computes this quaternion's conjugate, defined as the same w around the inverted axis.

Returns:
new conjugate quaternion

getMatrix

@Deprecated
public Matrix4x4 getMatrix()
Deprecated. use toMatrix4x4() instead

Returns:
result matrix

getNormalized

public Quaternion getNormalized()
Computes normalized version of this quaternion.

Returns:
new normalized quaternion

identity

public Quaternion identity()

interpolateTo

public Quaternion interpolateTo(Quaternion target,
                                float t)
Spherical interpolation to target quaternion (code ported from GamaSutra)

Parameters:
target - quaternion
t - interpolation factor (0..1)
Returns:
new interpolated quat

interpolateTo

public Quaternion interpolateTo(Quaternion target,
                                float t,
                                InterpolateStrategy is)
Parameters:
target -
t -
is -
Returns:
interpolated quaternion as new instance

interpolateToSelf

public Quaternion interpolateToSelf(Quaternion target,
                                    float t)
Spherical interpolation to target quaternion (code ported from GamaSutra)

Parameters:
target - quaternion
t - interpolation factor (0..1)
Returns:
new interpolated quat

interpolateToSelf

public Quaternion interpolateToSelf(Quaternion target,
                                    float t,
                                    InterpolateStrategy is)
Uses spherical interpolation to approach the target quaternion. The interpolation factor is manipulated by the chosen InterpolateStrategy first.

Parameters:
target -
t -
is -
Returns:
itself

magnitude

public float magnitude()

multiply

public Quaternion multiply(Quaternion q2)

normalize

public Quaternion normalize()

scale

public Quaternion scale(float t)

scaleSelf

public Quaternion scaleSelf(float t)

set

public Quaternion set(float w,
                      float x,
                      float y,
                      float z)

set

public Quaternion set(float w,
                      Vec3D v)

set

public Quaternion set(Quaternion q)

sub

public Quaternion sub(Quaternion q)

subSelf

public Quaternion subSelf(Quaternion q)

toArray

public float[] toArray()

toAxisAngle

public float[] toAxisAngle()
Converts the quaternion into a float array consisting of: rotation angle in radians, rotation axis x,y,z

Returns:
4-element float array

toMatrix4x4

public Matrix4x4 toMatrix4x4()
Converts the quat to a 4x4 rotation matrix (in row-major format). Assumes the quat is currently normalized (if not, you'll need to call normalize() first).

Returns:
result matrix

toMatrix4x4

public Matrix4x4 toMatrix4x4(Matrix4x4 result)

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object