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

java.lang.Object
  extended by com.sun.j3d.utils.behaviors.interpolators.KBCubicSplineSegment

public class KBCubicSplineSegment
extends java.lang.Object

The KBCubicSplineSegment class creates the representation of a Kochanek-Bartel's (also known as the TCB or Tension-Continuity-Bias Spline. This class takes 4 key frames as its input (using KBKeyFrame). 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 KBCubicSegmentClass 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, scale, heading pitch and bank it returns through the getInterpolated* methods.

Since:
Java3D 1.2

Method Summary
 float computeLength(float u)
          Computes the length of the curve at a given point between key frames.
 float getInterpolatedBank(float u)
          Computes the interpolated bank along the curve at a given point between key frames and returns the interpolated value as a float This routine uses linear interpolation if the (i+1)th key frame's linear value is equal to 1.
 float getInterpolatedHeading(float u)
          Computes the interpolated heading along the curve at a given point between key frames and returns the interpolated value as a float This routine uses linear interpolation if the (i+1)th key frame's linear value is equal to 1.
 float getInterpolatedPitch(float u)
          Computes the interpolated pitch along the curve at a given point between key frames and returns the interpolated value as a float This routine uses linear interpolation if the (i+1)th key frame's linear value is equal to 1.
 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 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.

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.

getInterpolatedHeading

public float getInterpolatedHeading(float u)
Computes the interpolated heading along the curve at a given point between key frames and returns the interpolated value as a float 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.
Returns:
returns the interpolated heading value

getInterpolatedPitch

public float getInterpolatedPitch(float u)
Computes the interpolated pitch along the curve at a given point between key frames and returns the interpolated value as a float 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.
Returns:
returns the interpolated pitch value

getInterpolatedBank

public float getInterpolatedBank(float u)
Computes the interpolated bank along the curve at a given point between key frames and returns the interpolated value as a float 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.
Returns:
returns the interpolated bank value

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