Java Reference

In-Depth Information

Quadratic Interpolator

While the spline interpolator can produce a large range of curves, sometimes it is desirable to create an

interpolator that uses a quadratic function to describe this curve. For example, the effect of gravity on a

falling body is best modeled with a quadratic function. A quadratic function has the form:

ax
2
+ bx + c = 0

Since it is expected that interpolators produce curves that intersect with 0,0 and 1,1, the formula

above can be simplified to the following:

ax
2
+ bx = 1

The variable
c
can be removed since we always want the curve to pass through the origin, as
c

describes where the curve intersects with the y axis. Now, changing
a
and
b
will change the shape of the

curve, but the curve must pass through the point 1,1, so only one of the two coefficients can be set by the

application. The other must be calculated based on the value of the other, in order to keep the equation

balanced. This example assumes that
a
can be set by the application and
b
will be solved for.

Listing 5-5 shows how a quadratic function is expressed in code.

Listing 5-5.
QuadraticInterpolator.fx

public class QuadraticInterpolator extends SimpleInterpolator {

public var a = 1.0 on replace{

b = 1.0 - a;

}

var b:Number = 1.0 - a;

public override function curve(fraction:Number):Number{

return (a*fraction*fraction + b*fraction);

}

}

In Listing 5-5, the function
curve
takes a fraction and calculates a value based on the values of
a
and

b
. This function will always return 0.0 for the fraction 0.0 (since anything times 0 is 0) and will also return

1.0 for 1.0, since as
a
changes,
b
will be recalculated to balance the equation. The screenshot in Listing 5-4

shows this interpolator in action.

The slider at the bottom of Figure 5-4 allows the value of
a
to be set, and the calculated value of
b
is

displayed. Note the parabolic curve produced.