j3d.org Code

## org.j3d.util.interpolator Class RotationInterpolator

```java.lang.Object
org.j3d.util.interpolator.Interpolator
org.j3d.util.interpolator.RotationInterpolator
```

`public class RotationInterpolatorextends Interpolator`

An interpolator that works with positional coordinates.

Two different interpolation schemes are provided - a simple linear system and quaternion based. The interpolator may take arbitrarily spaced keyframes and compute correct values.

The simple interpolation routine is just a linear interpolation between each component of each of the points.

For quaternion based interpolation, the code uses the algorithm presented by Graphics Gems III, Page 96.

Version:
\$Revision: 1.4 \$
Author:
Justin Couch

Field Summary
`static int` `QUATERNION`
Flag to nominate that the interpolation routine should be quaternions

Fields inherited from class org.j3d.util.interpolator.Interpolator
`allocatedSize, ARRAY_INCREMENT, currentSize, DEFAULT_SIZE, interpolationType, keys, LINEAR, STEP`

Constructor Summary
`RotationInterpolator()`
Create a new linear interpolator instance with the default size for the number of key values.
`RotationInterpolator(int size)`
Create an linear interpolator with the given basic size.
```RotationInterpolator(int size, int type)```
Create a interpolator with the given basic size using the interpolation type.

Method Summary
` void` ```addKeyFrame(float key, float x, float y, float z, float w)```
Add a key frame set of values at the given key point.
` void` ```addKeyFrame(float key, javax.vecmath.Quat4f pt)```
Add a key frame set of values at the given key point.
` float[]` `floatValue(float key)`
Get the interpolated value of the point at the given key value.
` javax.vecmath.Quat4f` `pointValue(float key)`
Get the interpolated value of the point at the given key value.
` java.lang.String` `toString()`
Create a string representation of this interpolator's values

Methods inherited from class org.j3d.util.interpolator.Interpolator
`clear, findKeyIndex`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### QUATERNION

`public static final int QUATERNION`
Flag to nominate that the interpolation routine should be quaternions

Constant Field Values
Constructor Detail

### RotationInterpolator

`public RotationInterpolator()`
Create a new linear interpolator instance with the default size for the number of key values.

### RotationInterpolator

`public RotationInterpolator(int size)`
Create an linear interpolator with the given basic size.

Parameters:
`size` - The starting number of items in interpolator

### RotationInterpolator

```public RotationInterpolator(int size,
int type)```
Create a interpolator with the given basic size using the interpolation type.

Parameters:
`size` - The starting number of items in interpolator
`type` - The type of interpolation scheme to use
Method Detail

```public void addKeyFrame(float key,
float x,
float y,
float z,
float w)```
Add a key frame set of values at the given key point. This will insert the values at the correct position within the array for the given key. If two keys have the same value, the new key is inserted before the old one.

Parameters:
`key` - The value of the key to use
`x` - The x coordinate of the orientation at this key
`y` - The y coordinate of the orientation at this key
`z` - The z coordinate of the orientation at this key
`w` - The w coordinate (angle) of the orientation at this key

```public void addKeyFrame(float key,
javax.vecmath.Quat4f pt)```
Add a key frame set of values at the given key point. This will insert the values at the correct position within the array for the given key. If two keys have the same value, the new key is inserted before the old one.

Parameters:
`key` - The value of the key to use
`pt` - The point data to take information from

### pointValue

`public javax.vecmath.Quat4f pointValue(float key)`
Get the interpolated value of the point at the given key value. If the key lies outside the range of the values defined, it will be clamped to the end point value. For speed reasons, this will return a reusable point instance. Do not modify the values or keep a reference to this as it will change values between calls.

Parameters:
`key` - The key value to get the position for
Returns:
A point representation of the value at that position

### floatValue

`public float[] floatValue(float key)`
Get the interpolated value of the point at the given key value. If the key lies outside the range of the values defined, it will be clamped to the end point value. For speed reasons, this will return a reusable float array. Do not modify the values or keep a reference to this as it will change values between calls.

Parameters:
`key` - The key value to get the position for
Returns:
An array of the values at that position [x, y, z]

### toString

`public java.lang.String toString()`
Create a string representation of this interpolator's values

Overrides:
`toString` in class `java.lang.Object`
Returns:
A nicely formatted string representation

j3d.org Code

Latest Info from http://code.j3d.org/