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

java.lang.Object
  |
  +--javax.media.j3d.SceneGraphObject
        |
        +--javax.media.j3d.Node
              |
              +--javax.media.j3d.Leaf
                    |
                    +--javax.media.j3d.Behavior
                          |
                          +--javax.media.j3d.Interpolator
                                |
                                +--com.sun.j3d.utils.behaviors.interpolators.KBSplinePathInterpolator
Direct Known Subclasses:
KBRotPosScaleSplinePathInterpolator

public abstract class KBSplinePathInterpolator
extends Interpolator

KBSplinePathInterpolator behavior. This class defines the base class for all Kochanek-Bartels (also known as TCB or Tension-Continuity-Bias) Spline Path Interpolators.

Since:
Java3D 1.2

Field Summary
protected  float currentU
          This value is the distance between knots value which can be used in further calculations by the subclass.
protected  KBKeyFrame[] keyFrames
           
protected  int lowerKnot
           
protected  int upperKnot
           
 
Fields inherited from class javax.media.j3d.Interpolator
defaultWakeupCriterion
 
Fields inherited from class javax.media.j3d.Node
ALLOW_AUTO_COMPUTE_BOUNDS_READ, ALLOW_AUTO_COMPUTE_BOUNDS_WRITE, ALLOW_BOUNDS_READ, ALLOW_BOUNDS_WRITE, ALLOW_COLLIDABLE_READ, ALLOW_COLLIDABLE_WRITE, ALLOW_LOCAL_TO_VWORLD_READ, ALLOW_PICKABLE_READ, ALLOW_PICKABLE_WRITE, ENABLE_COLLISION_REPORTING, ENABLE_PICK_REPORTING
 
Constructor Summary
KBSplinePathInterpolator(Alpha alpha, KBKeyFrame[] keys)
          Constructs a new KBSplinePathInterpolator object that interpolates between keyframes.
 
Method Summary
protected  void computePathInterpolation()
          This method computes the bounding knot indices and interpolation value "CurrentU" given the current value of alpha and the knots[] array.
 void duplicateNode(Node originalNode, boolean forceDuplicate)
          Copies all node information from originalNode into the current node.
 int getArrayLength()
          This method retrieves the length of the key frame array.
 KBKeyFrame getKeyFrame(int index)
          This method retrieves the key frame at the specified index.
 
Methods inherited from class javax.media.j3d.Interpolator
getAlpha, initialize, setAlpha
 
Methods inherited from class javax.media.j3d.Behavior
getEnable, getSchedulingBoundingLeaf, getSchedulingBounds, getView, postId, processStimulus, setEnable, setSchedulingBoundingLeaf, setSchedulingBounds, updateNodeReferences, wakeupOn
 
Methods inherited from class javax.media.j3d.Node
cloneNode, cloneTree, cloneTree, cloneTree, cloneTree, cloneTree, cloneTree, getBounds, getBoundsAutoCompute, getCollidable, getLocalToVworld, getLocalToVworld, getParent, getPickable, setBounds, setBoundsAutoCompute, setCollidable, setPickable
 
Methods inherited from class javax.media.j3d.SceneGraphObject
clearCapability, duplicateSceneGraphObject, getCapability, getUserData, isCompiled, isLive, setCapability, setUserData
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

keyFrames

protected KBKeyFrame[] keyFrames

currentU

protected float currentU
This value is the distance between knots value which can be used in further calculations by the subclass.

lowerKnot

protected int lowerKnot

upperKnot

protected int upperKnot
Constructor Detail

KBSplinePathInterpolator

public KBSplinePathInterpolator(Alpha alpha,
                                KBKeyFrame[] keys)
Constructs a new KBSplinePathInterpolator object that interpolates between keyframes. It takes at least two key frames. The first key frame's knot must have a value of 0.0 and the last knot must have a value of 1.0. An intermediate key frame with index k must have a knot value strictly greater than the knot value of a key frame with index less than k. Once this constructor has all the valid key frames it creates its own list of key fames that duplicates the first key frame at the beginning of the list and the last key frame at the end of the list.
Parameters:
alpha - the alpha object for this interpolator
keys - an array of KBKeyFrame. Requires at least two key frames.
Method Detail

getArrayLength

public int getArrayLength()
This method retrieves the length of the key frame array.
Returns:
the number of key frames

getKeyFrame

public KBKeyFrame getKeyFrame(int index)
This method retrieves the key frame at the specified index.
Parameters:
index - the index of the key frame requested
Returns:
the key frame at the associated index

computePathInterpolation

protected void computePathInterpolation()
This method computes the bounding knot indices and interpolation value "CurrentU" given the current value of alpha and the knots[] array.

duplicateNode

public void duplicateNode(Node originalNode,
                          boolean forceDuplicate)
Description copied from class: Node
Copies all node information from originalNode into the current node. This method is called from the cloneNode method which is, in turn, called by the cloneTree method.

For any NodeComponent objects contained by the object being duplicated, each NodeComponent object's duplicateOnCloneTree value is used to determine whether the NodeComponent should be duplicated in the new node or if just a reference to the current node should be placed in the new node. This flag can be overridden by setting the forceDuplicate parameter in the cloneTree method to true.
NOTE: Applications should not call this method directly. It should only be called by the cloneNode method.

Overrides:
duplicateNode in class Node
Following copied from class: javax.media.j3d.Node
Parameters:
originalNode - the original node to duplicate.
forceDuplicate - when set to true, causes the duplicateOnCloneTree flag to be ignored. When false, the value of each node's duplicateOnCloneTree variable determines whether NodeComponent data is duplicated or copied.
See Also:
Group.cloneNode(boolean), Node.duplicateNode(javax.media.j3d.Node, boolean), Node.cloneTree(), NodeComponent.setDuplicateOnCloneTree(boolean)