org.jmol.util
Class Quaternion

java.lang.Object
  extended by org.jmol.util.Quaternion

public class Quaternion
extends java.lang.Object


Field Summary
 javax.vecmath.Matrix3f mat
           
 float q0
           
 float q1
           
 float q2
           
 float q3
           
private static Quaternion qTemp
           
private static javax.vecmath.Point4f qZero
           
 
Constructor Summary
Quaternion()
           
Quaternion(javax.vecmath.AxisAngle4f a)
           
Quaternion(float q0, float q1, float q2, float q3)
           
Quaternion(javax.vecmath.Matrix3f mat)
           
Quaternion(javax.vecmath.Point4f pt)
           
Quaternion(Quaternion q)
           
Quaternion(javax.vecmath.Tuple3f pt, float theta)
           
 
Method Summary
 Quaternion add(float x)
           
 Quaternion div(Quaternion p)
           
 Quaternion divLeft(Quaternion p)
           
 float dot(Quaternion q)
           
 java.lang.String draw(java.lang.String prefix, java.lang.String id, javax.vecmath.Point3f ptCenter, float scale)
           
private  void fixQ(Quaternion qNew)
           
 java.lang.String getInfo()
           
 javax.vecmath.Matrix3f getMatrix()
           
 javax.vecmath.Vector3f getNormal()
           
 javax.vecmath.Vector3f getNormalDirected(javax.vecmath.Vector3f v0)
           
static Quaternion getQuaternionFrame(javax.vecmath.Point3f center, javax.vecmath.Point3f x, javax.vecmath.Point3f xy)
           
static Quaternion getQuaternionFrame(javax.vecmath.Vector3f vA, javax.vecmath.Vector3f vB, javax.vecmath.Vector3f vC)
           
 float getTheta()
           
 javax.vecmath.Point4f getThetaDirected(javax.vecmath.Point4f axisAngle)
           
 float getThetaRadians()
           
 javax.vecmath.Vector3f getVector(int i)
           
private  javax.vecmath.Vector3f getVector(int i, float scale)
           
 Quaternion inv()
           
 Quaternion leftDifference(Quaternion q2)
           
 Quaternion mul(float x)
           
 Quaternion mul(Quaternion p)
           
 Quaternion negate()
           
 Quaternion rightDifference(Quaternion q2)
           
 void set(javax.vecmath.AxisAngle4f a)
           
 void set(javax.vecmath.Matrix3f mat)
           
private  void set(javax.vecmath.Point4f pt)
          {x y z w} --> {q1 q2 q3 q0} and factored
 void set(Quaternion q)
           
 void set(javax.vecmath.Tuple3f pt, float theta)
          q = (cos(theta/2), sin(theta/2) * n)
private  void setMatrix()
           
 void setRef(Quaternion qref)
           
 javax.vecmath.AxisAngle4f toAxisAngle4f()
           
 javax.vecmath.Point4f toPoint4f()
           
 java.lang.String toString()
           
 java.lang.String toString0123()
           
 javax.vecmath.Point3f transform(javax.vecmath.Point3f pt)
           
 void transform(javax.vecmath.Point3f pt, javax.vecmath.Point3f ptNew)
           
 javax.vecmath.Vector3f transform(javax.vecmath.Vector3f v)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

q0

public float q0

q1

public float q1

q2

public float q2

q3

public float q3

mat

public javax.vecmath.Matrix3f mat

qZero

private static final javax.vecmath.Point4f qZero

qTemp

private static final Quaternion qTemp
Constructor Detail

Quaternion

public Quaternion()

Quaternion

public Quaternion(Quaternion q)

Quaternion

public Quaternion(javax.vecmath.Tuple3f pt,
                  float theta)

Quaternion

public Quaternion(javax.vecmath.Matrix3f mat)

Quaternion

public Quaternion(javax.vecmath.AxisAngle4f a)

Quaternion

public Quaternion(javax.vecmath.Point4f pt)

Quaternion

public Quaternion(float q0,
                  float q1,
                  float q2,
                  float q3)
Method Detail

set

public void set(Quaternion q)

set

private void set(javax.vecmath.Point4f pt)
{x y z w} --> {q1 q2 q3 q0} and factored

Parameters:
pt -

set

public void set(javax.vecmath.Tuple3f pt,
                float theta)
q = (cos(theta/2), sin(theta/2) * n)

Parameters:
pt -
theta -

set

public void set(javax.vecmath.AxisAngle4f a)

set

public void set(javax.vecmath.Matrix3f mat)

setRef

public void setRef(Quaternion qref)

getQuaternionFrame

public static final Quaternion getQuaternionFrame(javax.vecmath.Point3f center,
                                                  javax.vecmath.Point3f x,
                                                  javax.vecmath.Point3f xy)

getQuaternionFrame

public static final Quaternion getQuaternionFrame(javax.vecmath.Vector3f vA,
                                                  javax.vecmath.Vector3f vB,
                                                  javax.vecmath.Vector3f vC)

getMatrix

public javax.vecmath.Matrix3f getMatrix()

setMatrix

private void setMatrix()

add

public Quaternion add(float x)

mul

public Quaternion mul(float x)

mul

public Quaternion mul(Quaternion p)

div

public Quaternion div(Quaternion p)

divLeft

public Quaternion divLeft(Quaternion p)

dot

public float dot(Quaternion q)

inv

public Quaternion inv()

negate

public Quaternion negate()

fixQ

private void fixQ(Quaternion qNew)

getVector

public javax.vecmath.Vector3f getVector(int i)

getVector

private javax.vecmath.Vector3f getVector(int i,
                                         float scale)

getNormal

public javax.vecmath.Vector3f getNormal()
Returns:
vector such that 0 <= angle <= 180

getTheta

public float getTheta()
Returns:
0 <= angle <= 180 in degrees

getThetaRadians

public float getThetaRadians()

getNormalDirected

public javax.vecmath.Vector3f getNormalDirected(javax.vecmath.Vector3f v0)
Parameters:
v0 -
Returns:
vector option closest to v0

getThetaDirected

public javax.vecmath.Point4f getThetaDirected(javax.vecmath.Point4f axisAngle)
Parameters:
axisAngle -
Returns:
fill in theta of axisAngle such that

toPoint4f

public javax.vecmath.Point4f toPoint4f()

toAxisAngle4f

public javax.vecmath.AxisAngle4f toAxisAngle4f()

transform

public javax.vecmath.Point3f transform(javax.vecmath.Point3f pt)

transform

public void transform(javax.vecmath.Point3f pt,
                      javax.vecmath.Point3f ptNew)

transform

public javax.vecmath.Vector3f transform(javax.vecmath.Vector3f v)

leftDifference

public Quaternion leftDifference(Quaternion q2)

rightDifference

public Quaternion rightDifference(Quaternion q2)

getInfo

public java.lang.String getInfo()

draw

public java.lang.String draw(java.lang.String prefix,
                             java.lang.String id,
                             javax.vecmath.Point3f ptCenter,
                             float scale)

toString

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

toString0123

public java.lang.String toString0123()