com.sun.j3d.utils.behaviors.interpolators
Class CubicSplineSegment

java.lang.Object
  |
  +--com.sun.j3d.utils.behaviors.interpolators.CubicSplineSegment

public class CubicSplineSegment
extends java.lang.Object

The CubicSplineSegment class creates the representation of a TCB (Kochanek-Bartels Spline). This class takes 4 key frames as its input (using TCBKeyFrame). If interpolating between the ith and (i+1)th key frame then the four key frames that need to be specified are the (i-1)th, ith, (i+1)th and (i+2)th keyframes in order. The CubicSegmentClass then pre-computes the hermite interpolation basis coefficients if the (i+1)th frame has the linear flag set to zero. These are used to calculate the interpolated position, scale and quaternions when they requested by the user using the getInterpolated* methods. If the the (i+1)th frame's linear flag is set to 1 then the class uses linear interpolation to calculate the interpolated position, sccale and quaternions it returns through the getInterpolated* methods.

Since:
Java3D 1.1

Method Summary
 float computeLength(float u)
          Computes the length of the curve at a given point between key frames.
 void getInterpolatedPosition(float u, Point3f newPos)
          Computes the interpolated position along the curve at a given point between key frames and returns a Point3f with the interpolated x, y, and z scale components.
 void getInterpolatedPositionVector(float u, Vector3f newPos)
          Computes the interpolated position along the curve at a given point between key frames and returns a Vector3f with the interpolated x, y, and z scale components.
 void getInterpolatedQuaternion(float u, Quat4f newQuat)
          Computes the interpolated quaternion along the curve at a given point between key frames.
 void getInterpolatedScale(float u, Point3f newScale)
          Computes the interpolated scale along the curve at a given point between key frames and returns a Point3f with the interpolated x, y, and z scale components.
 float getInterpolatedValue(float u)
          Computes the ratio of the length of the spline from the ith key frame to the position specified by u to the length of the entire spline segment from the ith key frame to the (i+1) th key frame.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

computeLength

public float computeLength(float u)
Computes the length of the curve at a given point between key frames.

Parameters:
u - specifies the point between keyframes where 0 <= u <= 1.

getInterpolatedQuaternion

public void getInterpolatedQuaternion(float u,
                                      Quat4f newQuat)
Computes the interpolated quaternion along the curve at a given point between key frames. This routine uses linear interpolation if the (i+1)th key frame's linear value is equal to 1.

Parameters:
u - specifies the point between keyframes where 0 <= u <= 1.
newQuat - returns the value of the interpolated quaternion

getInterpolatedScale

public void getInterpolatedScale(float u,
                                 Point3f newScale)
Computes the interpolated scale along the curve at a given point between key frames and returns a Point3f with the interpolated x, y, and z scale components. This routine uses linear interpolation if the (i+1)th key frame's linear value is equal to 1.

Parameters:
u - specifies the point between keyframes where 0 <= u <= 1.
newScale - returns the interpolated x,y,z scale value in a Point3f

getInterpolatedPosition

public void getInterpolatedPosition(float u,
                                    Point3f newPos)
Computes the interpolated position along the curve at a given point between key frames and returns a Point3f with the interpolated x, y, and z scale components. This routine uses linear interpolation if the (i+1)th key frame's linear value is equal to 1.

Parameters:
u - specifies the point between keyframes where 0 <= u <= 1.
newPos - returns the interpolated x,y,z position in a Point3f

getInterpolatedPositionVector

public void getInterpolatedPositionVector(float u,
                                          Vector3f newPos)
Computes the interpolated position along the curve at a given point between key frames and returns a Vector3f with the interpolated x, y, and z scale components. This routine uses linear interpolation if the (i+1)th key frame's linear value is equal to 1.

Parameters:
u - specifies the point between keyframes where 0 <= u <= 1.
newPos - returns the interpolated x,y,z position in a Vector3f.

getInterpolatedValue

public float getInterpolatedValue(float u)
Computes the ratio of the length of the spline from the ith key frame to the position specified by u to the length of the entire spline segment from the ith key frame to the (i+1) th key frame. When the (i+1)th key frame's linear value is equal to 1, this is meaninful otherwise it should return u.

Parameters:
u - specifies the point between keyframes where 0 <= u <= 1.
Returns:
the interpolated ratio