Class LinearTransform1D
- Object
-
- Formattable
-
- AbstractMathTransform
-
- LinearTransform1D
-
- All Implemented Interfaces:
Serializable
,MathTransform
,MathTransform1D
,LinearTransform
public class LinearTransform1D extends AbstractMathTransform implements MathTransform1D, LinearTransform, Serializable
A one dimensional, linear transform. Input values x are converted into output values y using the following equation:y = offset + scale×x This class is the same as a 2×2 affine transform. However, this specialized
LinearTransform1D
class is faster. It is defined there because extensively used byGridCoverage2D
.- Since:
- 2.0
- Author:
- Martin Desruisseaux (IRD)
- See Also:
LogarithmicTransform1D
,ExponentialTransform1D
, Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class AbstractMathTransform
AbstractMathTransform.Inverse
-
-
Field Summary
Fields Modifier and Type Field Description static LinearTransform1D
IDENTITY
The identity transform.double
offset
The value to add to input values.double
scale
The value which is multiplied to input values.-
Fields inherited from class Formattable
SINGLE_LINE
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
LinearTransform1D(double scale, double offset)
Constructs a new linear transform.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static LinearTransform1D
create(double scale, double offset)
Constructs a new linear transform.double
derivative(double value)
Gets the derivative of this function at a value.Matrix
derivative(Position point)
Gets the derivative of this transform at a point.boolean
equals(Object object)
Compares the specified object with this math transform for equality.Matrix
getMatrix()
Returns this transform as an affine transform matrix.ParameterDescriptorGroup
getParameterDescriptors()
Returns the parameter descriptors for this math transform.ParameterValueGroup
getParameterValues()
Returns the matrix elements as a group of parameters values.int
getSourceDimensions()
Gets the dimension of input points, which is 1.int
getTargetDimensions()
Gets the dimension of output points, which is 1.int
hashCode()
Returns a hash value for this transform.MathTransform1D
inverse()
Creates the inverse transform of this object.boolean
isIdentity()
Tests whether this transform does not move any points.boolean
isIdentity(double tolerance)
Tests whether this transform does not move any points by using the provided tolerance.double
transform(double value)
Transforms the specified value.void
transform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
Transforms a list of coordinate point ordinal values.void
transform(float[] srcPts, int srcOff, float[] dstPts, int dstOff, int numPts)
Transforms a list of coordinate point ordinal values.-
Methods inherited from class AbstractMathTransform
createTransformedShape, derivative, ensureNonNull, formatWKT, getName, needCopy, normalizeAngle, rollLongitude, transform, transform, transform, transform
-
Methods inherited from class Formattable
cleanupThreadLocals, toString, toWKT, toWKT, toWKT, toWKT
-
Methods inherited from interface MathTransform
toWKT, transform, transform, transform
-
-
-
-
Field Detail
-
IDENTITY
public static final LinearTransform1D IDENTITY
The identity transform.
-
scale
public final double scale
The value which is multiplied to input values.
-
offset
public final double offset
The value to add to input values.
-
-
Constructor Detail
-
LinearTransform1D
protected LinearTransform1D(double scale, double offset)
Constructs a new linear transform. This constructor is provided for subclasses only. Instances should be created using the factory method, which may returns optimized implementations for some particular argument values.- Parameters:
scale
- Thescale
term in the linear equation.offset
- Theoffset
term in the linear equation.
-
-
Method Detail
-
create
public static LinearTransform1D create(double scale, double offset)
Constructs a new linear transform.- Parameters:
scale
- Thescale
term in the linear equation.offset
- Theoffset
term in the linear equation.
-
getParameterDescriptors
public ParameterDescriptorGroup getParameterDescriptors()
Returns the parameter descriptors for this math transform.- Overrides:
getParameterDescriptors
in classAbstractMathTransform
- Returns:
- The parameter descriptors for this math transform, or
null
. - See Also:
OperationMethod.getParameters()
-
getParameterValues
public ParameterValueGroup getParameterValues()
Returns the matrix elements as a group of parameters values. The number of parameters depends on the matrix size. Only matrix elements different from their default value will be included in this group.- Overrides:
getParameterValues
in classAbstractMathTransform
- Returns:
- A copy of the parameter values for this math transform.
- See Also:
Operation.getParameterValues()
-
getSourceDimensions
public int getSourceDimensions()
Gets the dimension of input points, which is 1.- Specified by:
getSourceDimensions
in interfaceMathTransform
- Specified by:
getSourceDimensions
in classAbstractMathTransform
- Returns:
- The dimension of input points.
-
getTargetDimensions
public int getTargetDimensions()
Gets the dimension of output points, which is 1.- Specified by:
getTargetDimensions
in interfaceMathTransform
- Specified by:
getTargetDimensions
in classAbstractMathTransform
- Returns:
- The dimension of output points.
-
getMatrix
public Matrix getMatrix()
Returns this transform as an affine transform matrix.- Specified by:
getMatrix
in interfaceLinearTransform
- Returns:
- A copy of the underlying matrix.
-
inverse
public MathTransform1D inverse() throws NoninvertibleTransformException
Creates the inverse transform of this object.- Specified by:
inverse
in interfaceMathTransform
- Specified by:
inverse
in interfaceMathTransform1D
- Overrides:
inverse
in classAbstractMathTransform
- Returns:
- The inverse transform.
- Throws:
NoninvertibleTransformException
- if the transform can't be inversed.
-
isIdentity
public boolean isIdentity()
Tests whether this transform does not move any points.- Specified by:
isIdentity
in interfaceMathTransform
- Overrides:
isIdentity
in classAbstractMathTransform
- Returns:
true
if thisMathTransform
is an identity transform;false
otherwise.
-
isIdentity
public boolean isIdentity(double tolerance)
Tests whether this transform does not move any points by using the provided tolerance. This method work in the same way thanXMatrix.isIdentity(double)
.- Specified by:
isIdentity
in interfaceLinearTransform
- Parameters:
tolerance
- The tolerance factor.- Returns:
true
if this transform is the identity one- Since:
- 2.3.1
-
derivative
public Matrix derivative(Position point) throws TransformException
Gets the derivative of this transform at a point. This implementation is different from the defaultAbstractMathTransform.derivative(java.awt.geom.Point2D)
implementation in that no coordinate point is required andDouble.NaN
may be a legal output value for some users.- Specified by:
derivative
in interfaceMathTransform
- Overrides:
derivative
in classAbstractMathTransform
- Parameters:
point
- The coordinate point where to evaluate the derivative.- Returns:
- The derivative at the specified point (never
null
). - Throws:
TransformException
- if the derivative can't be evaluated at the specified point.
-
derivative
public double derivative(double value)
Gets the derivative of this function at a value.- Specified by:
derivative
in interfaceMathTransform1D
- Parameters:
value
- The value where to evaluate the derivative.- Returns:
- The derivative at the specified point.
-
transform
public double transform(double value)
Transforms the specified value.- Specified by:
transform
in interfaceMathTransform1D
- Parameters:
value
- The value to transform.- Returns:
- the transformed value.
-
transform
public void transform(float[] srcPts, int srcOff, float[] dstPts, int dstOff, int numPts)
Transforms a list of coordinate point ordinal values.- Specified by:
transform
in interfaceMathTransform
- Overrides:
transform
in classAbstractMathTransform
- Parameters:
srcPts
- the array containing the source point coordinates.srcOff
- the offset to the first point to be transformed in the source array.dstPts
- the array into which the transformed point coordinates are returned. May be the same thansrcPts
.dstOff
- the offset to the location of the first transformed point that is stored in the destination array.numPts
- the number of point objects to be transformed.
-
transform
public void transform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
Transforms a list of coordinate point ordinal values.- Specified by:
transform
in interfaceMathTransform
- Parameters:
srcPts
- the array containing the source point coordinates.srcOff
- the offset to the first point to be transformed in the source array.dstPts
- the array into which the transformed point coordinates are returned. May be the same thansrcPts
.dstOff
- the offset to the location of the first transformed point that is stored in the destination array.numPts
- the number of point objects to be transformed.
-
hashCode
public int hashCode()
Returns a hash value for this transform. This value need not remain consistent between different implementations of the same class.- Overrides:
hashCode
in classAbstractMathTransform
-
equals
public boolean equals(Object object)
Compares the specified object with this math transform for equality.- Overrides:
equals
in classAbstractMathTransform
- Parameters:
object
- The object to compare with this transform.- Returns:
true
if the given object is a transform of the same class and if, given identical source position, the transformed position would be the equals.
-
-