|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.sun.j3d.utils.behaviors.interpolators.KBCubicSplineSegment
public class 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.
Field Summary | |
---|---|
(package private) float |
b0
|
(package private) float |
b1
|
(package private) float |
b2
|
(package private) float |
b3
|
(package private) Point3f |
c0
|
(package private) Point3f |
c1
|
(package private) Point3f |
c2
|
(package private) Point3f |
c3
|
(package private) float |
dda
|
(package private) float |
ddb
|
(package private) float |
dsa
|
(package private) float |
dsb
|
(package private) Point3f |
e0
|
(package private) Point3f |
e1
|
(package private) Point3f |
e2
|
(package private) Point3f |
e3
|
(package private) float |
h0
|
(package private) float |
h1
|
(package private) float |
h2
|
(package private) float |
h3
|
(package private) KBKeyFrame[] |
keyFrame
|
(package private) float |
length
|
(package private) int |
linear
|
(package private) static double[] |
modCoeff
|
(package private) static double[] |
modRoot
|
(package private) float |
one_minus_b_in
|
(package private) float |
one_minus_b_out
|
(package private) float |
one_minus_c_in
|
(package private) float |
one_minus_c_out
|
(package private) float |
one_minus_t_in
|
(package private) float |
one_minus_t_out
|
(package private) float |
one_plus_b_in
|
(package private) float |
one_plus_b_out
|
(package private) float |
one_plus_c_in
|
(package private) float |
one_plus_c_out
|
(package private) float |
p0
|
(package private) float |
p1
|
(package private) float |
p2
|
(package private) float |
p3
|
Constructor Summary | |
---|---|
KBCubicSplineSegment()
|
|
KBCubicSplineSegment(KBKeyFrame kf0,
KBKeyFrame kf1,
KBKeyFrame kf2,
KBKeyFrame kf3)
Creates a cubic spline segment between two key frames using the key frames provided. |
Method Summary | |
---|---|
private void |
computeCommonCoefficients(KBKeyFrame kf0,
KBKeyFrame kf1,
KBKeyFrame kf2,
KBKeyFrame kf3)
|
private void |
computeHermiteCoefficients(KBKeyFrame kf0,
KBKeyFrame kf1,
KBKeyFrame kf2,
KBKeyFrame kf3)
|
float |
computeLength(float u)
Computes the length of the curve at a given point between key frames. |
private float |
computeSpeed(float u)
|
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 |
Field Detail |
---|
static final double[] modRoot
static final double[] modCoeff
KBKeyFrame[] keyFrame
Point3f c0
Point3f c1
Point3f c2
Point3f c3
Point3f e0
Point3f e1
Point3f e2
Point3f e3
float h0
float h1
float h2
float h3
float p0
float p1
float p2
float p3
float b0
float b1
float b2
float b3
float one_minus_t_in
float one_minus_c_in
float one_minus_b_in
float one_plus_c_in
float one_plus_b_in
float ddb
float dda
float one_minus_t_out
float one_minus_c_out
float one_minus_b_out
float one_plus_c_out
float one_plus_b_out
float dsb
float dsa
float length
int linear
Constructor Detail |
---|
KBCubicSplineSegment()
KBCubicSplineSegment(KBKeyFrame kf0, KBKeyFrame kf1, KBKeyFrame kf2, KBKeyFrame kf3)
kf0
- (i - 1)th Key Framekf1
- ith Key Framekf2
- (i + 1)th Key Framekf3
- (i + 2)th Key FrameMethod Detail |
---|
private void computeCommonCoefficients(KBKeyFrame kf0, KBKeyFrame kf1, KBKeyFrame kf2, KBKeyFrame kf3)
private void computeHermiteCoefficients(KBKeyFrame kf0, KBKeyFrame kf1, KBKeyFrame kf2, KBKeyFrame kf3)
public float computeLength(float u)
u
- specifies the point between keyframes where 0 <= u <= 1.private float computeSpeed(float u)
public void getInterpolatedScale(float u, Point3f newScale)
u
- specifies the point between keyframes where 0 <= u <= 1.newScale
- returns the interpolated x,y,z scale value in a Point3fpublic void getInterpolatedPosition(float u, Point3f newPos)
u
- specifies the point between keyframes where 0 <= u <= 1.newPos
- returns the interpolated x,y,z position in a Point3fpublic void getInterpolatedPositionVector(float u, Vector3f newPos)
u
- specifies the point between keyframes where 0 <= u <= 1.newPos
- returns the interpolated x,y,z position in a Vector3f.public float getInterpolatedHeading(float u)
u
- specifies the point between keyframes where 0 <= u <= 1.
public float getInterpolatedPitch(float u)
u
- specifies the point between keyframes where 0 <= u <= 1.
public float getInterpolatedBank(float u)
u
- specifies the point between keyframes where 0 <= u <= 1.
public float getInterpolatedValue(float u)
u
- specifies the point between keyframes where 0 <= u <= 1.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |