# Class AbstractMathTransform1D.Inverse

Object
FormattableObject
AbstractMathTransform
AbstractMathTransform.Inverse
Inverse

All Implemented Interfaces:
  `Parameterized`, `LenientComparable`, `Printable`, `MathTransform`, `MathTransform1D`

Enclosing class:
  `AbstractMathTransform1D`

protected abstract static class AbstractMathTransform1D.Inverse extends AbstractMathTransform.Inverse implements MathTransform1D
Base class for implementation of inverse math transforms. This inner class is the inverse of the enclosing `AbstractMathTransform1D`.

## Serialization

This object may or may not be serializable, at implementation choices. Most Apache SIS implementations are serializable, but the serialized objects 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.7

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from class AbstractMathTransform

  `AbstractMathTransform​.Inverse`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `Inverse()`
  Constructs an inverse math transform.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Matrix`
  `derivative(DirectPosition point)`
  Gets the derivative of this transform at a point.
  `abstract MathTransform1D`
  `inverse()`
  Returns the inverse of this math transform.
  `Matrix`
  `transform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, boolean derivate)`
  Transforms a single point in the given array and opportunistically computes its derivative if requested.

  ### Methods inherited from class AbstractMathTransform.Inverse

  `computeHashCode, equals, formatTo, getDomain, getSourceDimensions, getTargetDimensions, isIdentity`

  ### Methods inherited from class AbstractMathTransform

  `equals, getContextualParameters, getParameterDescriptors, getParameterValues, hashCode, transform, transform, transform, transform, transform, tryConcatenate, tryConcatenate`

  ### Methods inherited from class FormattableObject

  `print, toString, toString, toWKT`

  ### Methods inherited from class Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface MathTransform

  `getSourceDimensions, getTargetDimensions, isIdentity, toWKT, transform, transform, transform, transform, transform`

  ### Methods inherited from interface MathTransform1D

  `derivative, transform`

- ## Constructor Details

  - ### Inverse

    protected Inverse()
    Constructs an inverse math transform.

- ## Method Details

  - ### inverse

    public abstract MathTransform1D inverse()
    Returns the inverse of this math transform. The returned transform should be the enclosing math transform.
    Specified by:
      `inverse` in interface `MathTransform`
    Specified by:
      `inverse` in interface `MathTransform1D`
    Specified by:
      `inverse` in class `AbstractMathTransform​.Inverse`
    Returns:
      the inverse of this transform.

  - ### transform

    public Matrix transform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, boolean derivate) throws TransformException
    Transforms a single point in the given array and opportunistically computes its derivative if requested. The default implementation delegates to `MathTransform1D​.transform(double)` and potentially to `MathTransform1D​.derivative(double)`. Subclasses may override this method for performance reason.
    Specified by:
      `transform` in class `AbstractMathTransform`
    Parameters:
      `srcPts` - the array containing the source coordinates (cannot be `null`).
      `srcOff` - the offset to the point to be transformed in the source array.
      `dstPts` - the array into which the transformed coordinates is returned. May be the same as `srcPts`. May be `null` if only the derivative matrix is desired.
      `dstOff` - the offset to the location of the transformed point that is stored in the destination array.
      `derivate` - `true` for computing the derivative, or `false` if not needed.
    Returns:
      the matrix of the transform derivative at the given source position, or `null` if the `derivate` argument is `false`.
    Throws:
      `TransformException` - if the point cannot be transformed or if a problem occurred while calculating the derivative.
    See Also:
      - `AbstractMathTransform​.derivative(DirectPosition)`
      - `AbstractMathTransform​.transform(DirectPosition, DirectPosition)`
      - `MathTransforms​.derivativeAndTransform(MathTransform, double[], int, double[], int)`

  - ### derivative

    public Matrix derivative(DirectPosition point) throws TransformException
    Gets the derivative of this transform at a point. The default implementation ensures that `point` is one-dimensional, then delegates to `MathTransform1D​.derivative(double)`.
    Specified by:
      `derivative` in interface `MathTransform`
    Overrides:
      `derivative` in class `AbstractMathTransform​.Inverse`
    Parameters:
      `point` - the position where to evaluate the derivative, or `null`.
    Returns:
      the derivative at the specified point (never `null`).
    Throws:
      `MismatchedDimensionException` - if `point` does not have the expected dimension.
      `TransformException` - if the derivative cannot be evaluated at the specified point.