com.sun.j3d.utils.behaviors.interpolators

## Class KBCubicSplineSegment

- java.lang.Object
- - 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

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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

Copyright 1996-2008 Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.