## toxi.geom Class Quaternion

```java.lang.Object
toxi.geom.Quaternion
```

`public class Quaternionextends 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`
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,

### 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,
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

`public Quaternion add(Quaternion q)`

`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`