A class containing static math methods useful for image processing.
bias
public static float bias(float a,
float b)
Apply a bias to a number in the unit interval, moving numbers towards 0 or 1
according to the bias parameter.
a
- the number to biasb
- the bias parameter. 0.5 means no change, smaller values bias towards 0, larger towards 1.
bilinearInterpolate
public static int bilinearInterpolate(float x,
float y,
int nw,
int ne,
int sw,
int se)
Bilinear interpolation of ARGB values.
x
- the X interpolation parameter 0..1y
- the y interpolation parameter 0..1
brightnessNTSC
public static int brightnessNTSC(int rgb)
Return the NTSC gray level of an RGB value.
circleDown
public static float circleDown(float x)
A "circle down" function. Returns 1-y on a unit circle given x. Useful for forming bevels.
x
- the input parameter in the range 0..1
circleUp
public static float circleUp(float x)
A "circle up" function. Returns y on a unit circle given 1-x. Useful for forming bevels.
x
- the input parameter in the range 0..1
clamp
public static float clamp(float x,
float a,
float b)
Clamp a value to an interval.
x
- the input parametera
- the lower clamp thresholdb
- the upper clamp threshold
clamp
public static int clamp(int x,
int a,
int b)
Clamp a value to an interval.
x
- the input parametera
- the lower clamp thresholdb
- the upper clamp threshold
colorSpline
public static int colorSpline(float x,
int numKnots,
int[] knots)
Compute a Catmull-Rom spline for RGB values.
x
- the input parameternumKnots
- the number of knots in the splineknots
- the array of knots
colorSpline
public static int colorSpline(int x,
int numKnots,
int[] xknots,
int[] yknots)
Compute a Catmull-Rom spline for RGB values, but with variable knot spacing.
x
- the input parameternumKnots
- the number of knots in the splinexknots
- the array of knot x valuesyknots
- the array of knot y values
gain
public static float gain(float a,
float b)
A variant of the gamma function.
a
- the number to apply gain tob
- the gain parameter. 0.5 means no change, smaller values reduce gain, larger values increase gain.
lerp
public static float lerp(float t,
float a,
float b)
Linear interpolation.
t
- the interpolation parametera
- the lower interpolation rangeb
- the upper interpolation range
lerp
public static int lerp(float t,
int a,
int b)
Linear interpolation.
t
- the interpolation parametera
- the lower interpolation rangeb
- the upper interpolation range
mixColors
public static int mixColors(float t,
int rgb1,
int rgb2)
Linear interpolation of ARGB values.
t
- the interpolation parameterrgb1
- the lower interpolation rangergb2
- the upper interpolation range
mod
public static double mod(double a,
double b)
Return a mod b. This differs from the % operator with respect to negative numbers.
a
- the dividendb
- the divisor
mod
public static float mod(float a,
float b)
Return a mod b. This differs from the % operator with respect to negative numbers.
a
- the dividendb
- the divisor
mod
public static int mod(int a,
int b)
Return a mod b. This differs from the % operator with respect to negative numbers.
a
- the dividendb
- the divisor
premultiply
public static void premultiply(int[] p,
int offset,
int length)
Premultiply a block of pixels
pulse
public static float pulse(float a,
float b,
float x)
The pulse function. Returns 1 between two thresholds, 0 outside.
a
- the lower threshold positionb
- the upper threshold positionx
- the input parameter
- the output value - 0 or 1
resample
public static void resample(int[] source,
int[] dest,
int length,
int offset,
int stride,
float[] out)
An implementation of Fant's resampling algorithm.
source
- the source pixelsdest
- the destination pixelslength
- the length of the scanline to resampleoffset
- the start offset into the arraysstride
- the offset between pixels in consecutive rowsout
- an array of output positions for each pixel
smoothPulse
public static float smoothPulse(float a1,
float a2,
float b1,
float b2,
float x)
A smoothed pulse function. A cubic function is used to smooth the step between two thresholds.
a1
- the lower threshold position for the start of the pulsea2
- the upper threshold position for the start of the pulseb1
- the lower threshold position for the end of the pulseb2
- the upper threshold position for the end of the pulsex
- the input parameter
smoothStep
public static float smoothStep(float a,
float b,
float x)
A smoothed step function. A cubic function is used to smooth the step between two thresholds.
a
- the lower threshold positionb
- the upper threshold positionx
- the input parameter
spline
public static float spline(float x,
int numKnots,
float[] knots)
Compute a Catmull-Rom spline.
x
- the input parameternumKnots
- the number of knots in the splineknots
- the array of knots
spline
public static float spline(float x,
int numKnots,
int[] xknots,
int[] yknots)
Compute a Catmull-Rom spline, but with variable knot spacing.
x
- the input parameternumKnots
- the number of knots in the splinexknots
- the array of knot x valuesyknots
- the array of knot y values
step
public static float step(float a,
float x)
The step function. Returns 0 below a threshold, 1 above.
a
- the threshold positionx
- the input parameter
- the output value - 0 or 1
triangle
public static float triangle(float x)
The triangle function. Returns a repeating triangle shape in the range 0..1 with wavelength 1.0
unpremultiply
public static void unpremultiply(int[] p,
int offset,
int length)
Premultiply a block of pixels