Class 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

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method 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, javax.vecmath.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, javax.vecmath.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, javax.vecmath.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,
                                         javax.vecmath.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,
                                            javax.vecmath.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,
                                                  javax.vecmath.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