## org.jscience.media.pictures.filters Class ImageMath

```java.lang.Object
org.jscience.media.pictures.filters.ImageMath
```

`public class ImageMathextends java.lang.Object`

A class containing static math methods useful for image processing.

Field Summary
`static float` `HALF_PI`
DOCUMENT ME!
`static float` `PI`
DOCUMENT ME!
`static float` `QUARTER_PI`
DOCUMENT ME!
`static float` `TWO_PI`
DOCUMENT ME!

Constructor Summary
`ImageMath()`

Method Summary
`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.
`static int` ```bilinearInterpolate(float x, float y, int[] p)```
Bilinear interpolation of ARGB values.
`static int` `brightnessNTSC(int rgb)`
Return the NTSC gray level of an RGB value.
`static float` `circleDown(float x)`
A "circle down" function.
`static float` `circleUp(float x)`
A "circle up" function.
`static float` ```clamp(float x, float a, float b)```
Clamp a value to an interval.
`static int` ```clamp(int x, int a, int b)```
Clamp a value to an interval.
`static int` ```colorSpline(float x, int numKnots, int[] knots)```
Compute a Catmull-Rom spline for RGB values.
`static int` ```colorSpline(int x, int numKnots, int[] xknots, int[] yknots)```
Compute a Catmull-Rom spline for RGB values, but with variable knot spacing.
`static float` ```gain(float a, float b)```
A variant of the gamma function.
`static float` ```lerp(float t, float a, float b)```
Linear interpolation.
`static int` ```lerp(float t, int a, int b)```
Linear interpolation.
`static int` ```mixColors(float t, int rgb1, int rgb2)```
Linear interpolation of ARGB values.
`static float` ```mod(float a, float b)```
Return a mod b.
`static int` ```mod(int a, int b)```
Return a mod b.
`static float` ```pulse(float a, float b, float x)```
The pulse function.
`static void` ```resample(int[] source, int[] dest, int length, int offset, int stride, float[] out)```
An implementation of Fant's resampling algorithm.
`static float` ```smoothPulse(float a1, float a2, float b1, float b2, float x)```
A smoothed pulse function.
`static float` ```smoothStep(float a, float b, float x)```
A smoothed step function.
`static float` ```spline(float x, int numKnots, float[] knots)```
Compute a Catmull-Rom spline.
`static float` ```spline(float x, int numKnots, int[] xknots, int[] yknots)```
Compute a Catmull-Rom spline, but with variable knot spacing.
`static float` ```step(float a, float x)```
The step function.
`static float` `triangle(float x)`
The triangle function.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### PI

`public static final float PI`
DOCUMENT ME!

Constant Field Values

### HALF_PI

`public static final float HALF_PI`
DOCUMENT ME!

Constant Field Values

### QUARTER_PI

`public static final float QUARTER_PI`
DOCUMENT ME!

Constant Field Values

### TWO_PI

`public static final float TWO_PI`
DOCUMENT ME!

Constant Field Values
Constructor Detail

### ImageMath

`public ImageMath()`
Method Detail

### 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.

Parameters:
`a` - the number to bias
`b` - the bias parameter. 0.5 means no change, smaller values bias towards 0, larger towards 1.
Returns:
the output value

### gain

```public static float gain(float a,
float b)```
A variant of the gamma function.

Parameters:
`a` - the number to apply gain to
`b` - the gain parameter. 0.5 means no change, smaller values reduce gain, larger values increase gain.
Returns:
the output value

### step

```public static float step(float a,
float x)```
The step function. Returns 0 below a threshold, 1 above.

Parameters:
`a` - the threshold position
`x` - the input parameter
Returns:
the output value - 0 or 1

### pulse

```public static float pulse(float a,
float b,
float x)```
The pulse function. Returns 1 between two thresholds, 0 outside.

Parameters:
`a` - the lower threshold position
`b` - the upper threshold position
`x` - the input parameter
Returns:
the output value - 0 or 1

### 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.

Parameters:
`a1` - the lower threshold position for the start of the pulse
`a2` - the upper threshold position for the start of the pulse
`b1` - the lower threshold position for the end of the pulse
`b2` - the upper threshold position for the end of the pulse
`x` - the input parameter
Returns:
the output value

### 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.

Parameters:
`a` - the lower threshold position
`b` - the upper threshold position
`x` - the input parameter
Returns:
the output value

### circleUp

`public static float circleUp(float x)`
A "circle up" function. Returns y on a unit circle given 1-x. Useful for forming bevels.

Parameters:
`x` - the input parameter in the range 0..1
Returns:
the output 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.

Parameters:
`x` - the input parameter in the range 0..1
Returns:
the output value

### clamp

```public static float clamp(float x,
float a,
float b)```
Clamp a value to an interval.

Parameters:
`x` - the input parameter
`a` - the lower clamp threshold
`b` - the upper clamp threshold
Returns:
the clamped value

### clamp

```public static int clamp(int x,
int a,
int b)```
Clamp a value to an interval.

Parameters:
`x` - the input parameter
`a` - the lower clamp threshold
`b` - the upper clamp threshold
Returns:
the clamped value

### mod

```public static float mod(float a,
float b)```
Return a mod b. This differs from the % operator with respect to negative numbers.

Parameters:
`a` - the dividend
`b` - the divisor
Returns:
a mod b

### mod

```public static int mod(int a,
int b)```
Return a mod b. This differs from the % operator with respect to negative numbers.

Parameters:
`a` - the dividend
`b` - the divisor
Returns:
a mod b

### triangle

`public static float triangle(float x)`
The triangle function. Returns a repeating triangle shape in the range 0..1 with wavelength 1.0

Parameters:
`x` - the input parameter
Returns:
the output value

### lerp

```public static float lerp(float t,
float a,
float b)```
Linear interpolation.

Parameters:
`t` - the interpolation parameter
`a` - the lower interpolation range
`b` - the upper interpolation range
Returns:
the interpolated value

### lerp

```public static int lerp(float t,
int a,
int b)```
Linear interpolation.

Parameters:
`t` - the interpolation parameter
`a` - the lower interpolation range
`b` - the upper interpolation range
Returns:
the interpolated value

### mixColors

```public static int mixColors(float t,
int rgb1,
int rgb2)```
Linear interpolation of ARGB values.

Parameters:
`t` - the interpolation parameter
`rgb1` - the lower interpolation range
`rgb2` - the upper interpolation range
Returns:
the interpolated value

### bilinearInterpolate

```public static int bilinearInterpolate(float x,
float y,
int[] p)```
Bilinear interpolation of ARGB values.

Parameters:
`x` - the X interpolation parameter 0..1
`y` - the y interpolation parameter 0..1
`p` - array of four ARGB values in the order NW, NE, SW, SE
Returns:
the interpolated value

### brightnessNTSC

`public static int brightnessNTSC(int rgb)`
Return the NTSC gray level of an RGB value.

Parameters:
`rgb` - the input pixel
Returns:
the gray level (0-255)

### spline

```public static float spline(float x,
int numKnots,
float[] knots)```
Compute a Catmull-Rom spline.

Parameters:
`x` - the input parameter
`numKnots` - the number of knots in the spline
`knots` - the array of knots
Returns:
the spline value
Throws:
`java.lang.IllegalArgumentException` - DOCUMENT ME!

### spline

```public static float spline(float x,
int numKnots,
int[] xknots,
int[] yknots)```
Compute a Catmull-Rom spline, but with variable knot spacing.

Parameters:
`x` - the input parameter
`numKnots` - the number of knots in the spline
`xknots` - the array of knot x values
`yknots` - the array of knot y values
Returns:
the spline value
Throws:
`java.lang.IllegalArgumentException` - DOCUMENT ME!

### colorSpline

```public static int colorSpline(float x,
int numKnots,
int[] knots)```
Compute a Catmull-Rom spline for RGB values.

Parameters:
`x` - the input parameter
`numKnots` - the number of knots in the spline
`knots` - the array of knots
Returns:
the spline value
Throws:
`java.lang.IllegalArgumentException` - DOCUMENT ME!

### 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.

Parameters:
`x` - the input parameter
`numKnots` - the number of knots in the spline
`xknots` - the array of knot x values
`yknots` - the array of knot y values
Returns:
the spline value
Throws:
`java.lang.IllegalArgumentException` - DOCUMENT ME!

### resample

```public static void resample(int[] source,
int[] dest,
int length,
int offset,
int stride,
float[] out)```
An implementation of Fant's resampling algorithm.

Parameters:
`source` - the source pixels
`dest` - the destination pixels
`length` - the length of the scanline to resample
`offset` - the start offset into the arrays
`stride` - the offset between pixels in consecutive rows
`out` - an array of output positions for each pixel