Class LogarithmicTransform1D
java.lang.Object
org.apache.sis.io.wkt.FormattableObject
org.apache.sis.referencing.operation.transform.AbstractMathTransform
org.apache.sis.referencing.operation.transform.AbstractMathTransform1D
org.apache.sis.referencing.operation.transform.LogarithmicTransform1D
- All Implemented Interfaces:
Serializable
,Parameterized
,LenientComparable
,org.opengis.referencing.operation.MathTransform
,org.opengis.referencing.operation.MathTransform1D
- Direct Known Subclasses:
LogarithmicTransform1D.Base10
A one dimensional, logarithmic transform. This transform is the inverse of
ExponentialTransform1D
.
The default implementation computes the natural logarithm of input values using Math.log(double)
.
Subclasses compute alternate logarithms, for example in base 10 computed by Math.log10(double)
.
Logarithms in bases other than e or 10 are computed by concatenating a linear transform, using the following mathematical identity:
logbase(x) = ln(x) / ln(base)
Serialization
Serialized instances of this class are not guaranteed to be compatible with future SIS versions. Serialization should be used only for short term storage or RMI between applications running the same SIS version.- Since:
- 0.5
- Version:
- 0.5
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static final class
Special case for base 10 taking advantage of extra precision provided byMath.log10(double)
.Nested classes/interfaces inherited from class org.apache.sis.referencing.operation.transform.AbstractMathTransform1D
AbstractMathTransform1D.Inverse
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate org.opengis.referencing.operation.MathTransform1D
The inverse of this transform.private static final LogarithmicTransform1D
The unique instance of the natural logarithmic transform.private static final long
Serial number for inter-operability with different versions.Fields inherited from class org.apache.sis.referencing.operation.transform.AbstractMathTransform
MAXIMUM_BUFFER_SIZE, MAXIMUM_FAILURES
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription(package private) double
base()
Returns the base of this logarithmic function.private org.opengis.referencing.operation.MathTransform1D
concatenate
(double scale, double offset) Returns the concatenation of this transform by the given scale and offset.static org.opengis.referencing.operation.MathTransform1D
create
(double base, double offset) Constructs a new logarithmic transform which add the given offset after the logarithm.(package private) static org.opengis.referencing.operation.MathTransform1D
create
(ExponentialTransform1D inverse) Constructs a new logarithmic transform which is the inverse of the supplied exponential transform.double
derivative
(double value) Gets the derivative of this function at a value.org.opengis.referencing.operation.MathTransform1D
inverse()
Returns the inverse of this transform.(package private) double
lnBase()
Returns the natural logarithm of the base of this logarithmic function.(package private) double
log
(double value) Returns the logarithm of the given value in the base of this logarithmic transform.(package private) double
offset()
Returns the offset applied after this logarithmic function.(package private) double
pow
(double value) Returns the base of this logarithmic transform raised to the given power.double
transform
(double value) Transforms the specified value.void
transform
(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts) Transforms many positions in a list of coordinate values.void
transform
(double[] srcPts, int srcOff, float[] dstPts, int dstOff, int numPts) Transforms many positions in a list of coordinate values.void
transform
(float[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts) Transforms many positions in a list of coordinate values.void
transform
(float[] srcPts, int srcOff, float[] dstPts, int dstOff, int numPts) Transforms many positions in a list of coordinate values.protected org.opengis.referencing.operation.MathTransform
tryConcatenate
(boolean applyOtherFirst, org.opengis.referencing.operation.MathTransform other, org.opengis.referencing.operation.MathTransformFactory factory) Concatenates in an optimized way aMathTransform
other
to thisMathTransform
.Methods inherited from class org.apache.sis.referencing.operation.transform.AbstractMathTransform1D
derivative, getSourceDimensions, getTargetDimensions, transform
Methods inherited from class org.apache.sis.referencing.operation.transform.AbstractMathTransform
beforeFormat, computeHashCode, equals, equals, formatTo, getContextualParameters, getDomain, getParameterDescriptors, getParameterValues, hashCode, isIdentity, isInverseEquals, mismatchedDimension, transform
Methods inherited from class org.apache.sis.io.wkt.FormattableObject
print, toString, toString, toWKT
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.opengis.referencing.operation.MathTransform
isIdentity, toWKT, transform
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerial number for inter-operability with different versions.- See Also:
-
NATURAL
The unique instance of the natural logarithmic transform. -
inverse
private org.opengis.referencing.operation.MathTransform1D inverseThe inverse of this transform. Created only when first needed. Serialized in order to avoid rounding error if this transform is actually the one which was created from the inverse.
-
-
Constructor Details
-
LogarithmicTransform1D
LogarithmicTransform1D()Constructs a new logarithmic transform.- See Also:
-
-
Method Details
-
create
public static org.opengis.referencing.operation.MathTransform1D create(double base, double offset) Constructs a new logarithmic transform which add the given offset after the logarithm.- Parameters:
base
- the base of the logarithm (typically 10).offset
- the offset to add to the logarithm.- Returns:
- the math transform.
-
create
Constructs a new logarithmic transform which is the inverse of the supplied exponential transform. -
concatenate
private org.opengis.referencing.operation.MathTransform1D concatenate(double scale, double offset) Returns the concatenation of this transform by the given scale and offset. This method does not check if a simplification is possible. -
tryConcatenate
protected org.opengis.referencing.operation.MathTransform tryConcatenate(boolean applyOtherFirst, org.opengis.referencing.operation.MathTransform other, org.opengis.referencing.operation.MathTransformFactory factory) throws org.opengis.util.FactoryException Concatenates in an optimized way aMathTransform
other
to thisMathTransform
. This implementation can optimize some concatenation withLinearTransform1D
andExponentialTransform1D
.- Overrides:
tryConcatenate
in classAbstractMathTransform
- Parameters:
applyOtherFirst
-true
if the transformation order isother
followed bythis
, orfalse
if the transformation order isthis
followed byother
.other
- the other math transform to (pre-)concatenate with this transform.factory
- the factory which is (indirectly) invoking this method, ornull
if none.- Returns:
- the combined math transform, or
null
if no optimized combined transform is available. - Throws:
org.opengis.util.FactoryException
- if an error occurred while combining the transforms.- See Also:
-
inverse
public org.opengis.referencing.operation.MathTransform1D inverse()Returns the inverse of this transform.- Specified by:
inverse
in interfaceorg.opengis.referencing.operation.MathTransform
- Specified by:
inverse
in interfaceorg.opengis.referencing.operation.MathTransform1D
- Overrides:
inverse
in classAbstractMathTransform1D
-
base
double base()Returns the base of this logarithmic function. -
lnBase
double lnBase() -
offset
double offset()Returns the offset applied after this logarithmic function. -
derivative
public double derivative(double value) Gets the derivative of this function at a value.- Specified by:
derivative
in interfaceorg.opengis.referencing.operation.MathTransform1D
- Specified by:
derivative
in classAbstractMathTransform1D
- Parameters:
value
- the value where to evaluate the derivative.- Returns:
- the derivative at the specified point.
-
pow
double pow(double value) Returns the base of this logarithmic transform raised to the given power.- Parameters:
value
- the power to raise the base.- Returns:
- the base of this transform raised to the given power.
-
log
double log(double value) Returns the logarithm of the given value in the base of this logarithmic transform. This method is similar totransform(double)
except that the offset is not added.- Parameters:
value
- the value for which to compute the log.- Returns:
- the log of the given value in the base used by this transform.
-
transform
public double transform(double value) Transforms the specified value.- Specified by:
transform
in interfaceorg.opengis.referencing.operation.MathTransform1D
- Specified by:
transform
in classAbstractMathTransform1D
- Parameters:
value
- the value to transform.- Returns:
- the transformed value.
-
transform
public void transform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts) Transforms many positions in a list of coordinate values.- Specified by:
transform
in interfaceorg.opengis.referencing.operation.MathTransform
- 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(float[] srcPts, int srcOff, float[] dstPts, int dstOff, int numPts) Transforms many positions in a list of coordinate values.- Specified by:
transform
in interfaceorg.opengis.referencing.operation.MathTransform
- 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, float[] dstPts, int dstOff, int numPts) Transforms many positions in a list of coordinate values.- Specified by:
transform
in interfaceorg.opengis.referencing.operation.MathTransform
- 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.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(float[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts) Transforms many positions in a list of coordinate values.- Specified by:
transform
in interfaceorg.opengis.referencing.operation.MathTransform
- 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.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.
-