Class KBCubicSplineSegment
java.lang.Object
com.sun.j3d.utils.behaviors.interpolators.KBCubicSplineSegment
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
Modifier and TypeMethodDescriptionfloat
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.
-
Method Details
-
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
-