com.jogamp.opengl.math
Class Quaternion

java.lang.Object
  extended by com.jogamp.opengl.math.Quaternion

public class Quaternion
extends Object


Constructor Summary
Quaternion()
           
Quaternion(float[] vector, float angle)
          Constructor to create a rotation based quaternion from axis vector and angle
Quaternion(float[] vector1, float[] vector2)
          Constructor to create a rotation based quaternion from two vectors
Quaternion(float x, float y, float z, float w)
           
Quaternion(Quaternion q)
           
 
Method Summary
 void add(Quaternion q)
          Add a quaternion
 void divide(float n)
          Divide a quaternion by a constant
 void fromAxis(float[] vector, float angle)
          Initialize this quaternion with given axis vector and rotation angle
 float getW()
           
 float getX()
           
 float getY()
           
 float getZ()
           
 void inverse()
          Invert the quaternion If rotational, will produce a the inverse rotation
 boolean isEmpty()
          Deprecated. use isIdentity() instead
 boolean isIdentity()
          Check if this quaternion represents an identity matrix, for rotation.
 boolean isRotationMatrix(float[] m)
          Check if the the 3x3 matrix (param) is in fact an affine rotational matrix
 void mult(float n)
          Multiply a quaternion by a constant
 float[] mult(float[] vector)
          Rotate given vector by this quaternion
 void mult(Quaternion q)
          Multiply this quaternion by the param quaternion
 void normalize()
          Normalize a quaternion required if to be used as a rotational quaternion
 void setFromMatrix(float[] m)
          compute the quaternion from a 3x3 column matrix
 void setIdentity()
          Set this quaternion to identity (x=0,y=0,z=0,w=1)
 void setW(float w)
           
 void setX(float x)
           
 void setY(float y)
           
 void setZ(float z)
           
 void slerp(Quaternion a, Quaternion b, float t)
          Set this quaternion from a Sphereical interpolation of two param quaternion, used mostly for rotational animation.
 void subtract(Quaternion q)
          Subtract a quaternion
 float[] toAxis()
          Transform the rotational quaternion to axis based rotation angles
 float[] toMatrix()
          Transform this quaternion to a 4x4 column matrix representing the rotation
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Quaternion

public Quaternion()

Quaternion

public Quaternion(Quaternion q)

Quaternion

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

Quaternion

public Quaternion(float[] vector1,
                  float[] vector2)
Constructor to create a rotation based quaternion from two vectors

Parameters:
vector1 -
vector2 -

Quaternion

public Quaternion(float[] vector,
                  float angle)
Constructor to create a rotation based quaternion from axis vector and angle

Parameters:
vector - axis vector
angle - rotation angle (rads)
See Also:
fromAxis(float[], float)
Method Detail

fromAxis

public void fromAxis(float[] vector,
                     float angle)
Initialize this quaternion with given axis vector and rotation angle

Parameters:
vector - axis vector
angle - rotation angle (rads)

toAxis

public float[] toAxis()
Transform the rotational quaternion to axis based rotation angles

Returns:
new float[4] with ,theta,Rx,Ry,Rz

getW

public float getW()

setW

public void setW(float w)

getX

public float getX()

setX

public void setX(float x)

getY

public float getY()

setY

public void setY(float y)

getZ

public float getZ()

setZ

public void setZ(float z)

add

public void add(Quaternion q)
Add a quaternion

Parameters:
q - quaternion

subtract

public void subtract(Quaternion q)
Subtract a quaternion

Parameters:
q - quaternion

divide

public void divide(float n)
Divide a quaternion by a constant

Parameters:
n - a float to divide by

mult

public void mult(Quaternion q)
Multiply this quaternion by the param quaternion

Parameters:
q - a quaternion to multiply with

mult

public void mult(float n)
Multiply a quaternion by a constant

Parameters:
n - a float constant

mult

public float[] mult(float[] vector)
Rotate given vector by this quaternion

Parameters:
vector - input vector
Returns:
rotated vector

normalize

public void normalize()
Normalize a quaternion required if to be used as a rotational quaternion


inverse

public void inverse()
Invert the quaternion If rotational, will produce a the inverse rotation


toMatrix

public float[] toMatrix()
Transform this quaternion to a 4x4 column matrix representing the rotation

Returns:
new float[16] column matrix 4x4

slerp

public void slerp(Quaternion a,
                  Quaternion b,
                  float t)
Set this quaternion from a Sphereical interpolation of two param quaternion, used mostly for rotational animation.

Note: Method does not normalize this quaternion!

See http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/ quaternions/slerp/

Parameters:
a - initial quaternion
b - target quaternion
t - float between 0 and 1 representing interp.

isEmpty

@Deprecated
public boolean isEmpty()
Deprecated. use isIdentity() instead

Check if this quaternion is empty, ie (0,0,0,1)

Returns:
true if empty, false otherwise

isIdentity

public boolean isIdentity()
Check if this quaternion represents an identity matrix, for rotation.

Returns:
true if it is an identity rep., false otherwise

setIdentity

public void setIdentity()
Set this quaternion to identity (x=0,y=0,z=0,w=1)


setFromMatrix

public void setFromMatrix(float[] m)
compute the quaternion from a 3x3 column matrix

Parameters:
m - 3x3 column matrix

isRotationMatrix

public boolean isRotationMatrix(float[] m)
Check if the the 3x3 matrix (param) is in fact an affine rotational matrix

Parameters:
m - 3x3 column matrix
Returns:
true if representing a rotational matrix, false otherwise


Copyright 2010 JogAmp Community.