Class EuclideanTransformation2D

java.lang.Object
com.irurueta.geometry.Transformation2D
com.irurueta.geometry.EuclideanTransformation2D
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
MetricTransformation2D

public class EuclideanTransformation2D extends Transformation2D implements Serializable
This class performs Euclidean transformations on 2D space. Euclidean transformations include transformations related to rotations and translations. Scale cannot be modified on Euclidean scale.
See Also:
  • Field Details

    • NUM_TRANSLATION_COORDS

      public static final int NUM_TRANSLATION_COORDS
      Constant indicating number of coordinates required in translation arrays.
      See Also:
    • HOM_COORDS

      public static final int HOM_COORDS
      Constant defining number of homogeneous coordinates in 2D space.
      See Also:
    • rotation

      private Rotation2D rotation
      2D rotation to be performed on geometric objects.
    • translation

      private double[] translation
      2D translation to be performed on geometric objects. Translation is specified using inhomogeneous coordinates.
  • Constructor Details

    • EuclideanTransformation2D

      public EuclideanTransformation2D()
      Empty constructor. Creates transformation that has no effect.
    • EuclideanTransformation2D

      public EuclideanTransformation2D(Rotation2D rotation)
      Creates transformation with provided rotation.
      Parameters:
      rotation - a 2D rotation.
      Throws:
      NullPointerException - raised if provided rotation is null.
    • EuclideanTransformation2D

      public EuclideanTransformation2D(double[] translation)
      Creates transformation with provided 2D translation.
      Parameters:
      translation - Array indicating 2D translation using inhomogeneous coordinates.
      Throws:
      NullPointerException - raised if provided array is null.
      IllegalArgumentException - raised if length of array is not equal to NUM_TRANSLATION_COORDS.
    • EuclideanTransformation2D

      public EuclideanTransformation2D(Rotation2D rotation, double[] translation)
      Creates transformation with provided 2D rotation and translation.
      Parameters:
      rotation - a 2D rotation.
      translation - array indicating 2D translation using inhomogeneous coordinates.
      Throws:
      NullPointerException - raised if provided array is null.
      IllegalArgumentException - Raised if length of array is not equal to NUM_TRANSLATION_COORDS.
    • EuclideanTransformation2D

      public EuclideanTransformation2D(Point2D inputPoint1, Point2D inputPoint2, Point2D inputPoint3, Point2D outputPoint1, Point2D outputPoint2, Point2D outputPoint3) throws CoincidentPointsException
      Creates transformation by estimating its internal values using provided 3 corresponding original and transformed points.
      Parameters:
      inputPoint1 - 1st input point.
      inputPoint2 - 2nd input point.
      inputPoint3 - 3rd input point.
      outputPoint1 - 1st transformed point corresponding to 1st input point.
      outputPoint2 - 2nd transformed point corresponding to 2nd input point.
      outputPoint3 - 3rd transformed point corresponding to 3rd input point.
      Throws:
      CoincidentPointsException - raised if transformation cannot be estimated for some reason (point configuration degeneracy, duplicate points or numerical instabilities).
  • Method Details

    • getRotation

      public Rotation2D getRotation()
      Returns 2D rotation assigned to this transformation.
      Returns:
      2D rotation.
    • setRotation

      public void setRotation(Rotation2D rotation)
      Sets 2D rotation for this transformation.
      Parameters:
      rotation - a 2D rotation.
      Throws:
      NullPointerException - raised if provided rotation is null.
    • addRotation

      public void addRotation(Rotation2D rotation)
      Adds provided rotation to current rotation assigned to this transformation.
      Parameters:
      rotation - 2D rotation to be added.
    • getTranslation

      public double[] getTranslation()
      Returns 2D translation assigned to this transformation as an array expressed in inhomogeneous coordinates.
      Returns:
      2D translation array.
    • setTranslation

      public void setTranslation(double[] translation)
      Sets 2D translation assigned to this transformation as an array expressed in inhomogeneous coordinates.
      Parameters:
      translation - 2D translation array.
      Throws:
      IllegalArgumentException - Raised if provided array does not have length equal to NUM_TRANSLATION_COORDS.
    • addTranslation

      public void addTranslation(double[] translation)
      Adds provided translation to current translation on this transformation. Provided translation must be expressed as an array of inhomogeneous coordinates.
      Parameters:
      translation - 2D translation array.
      Throws:
      IllegalArgumentException - Raised if provided array does not have length equal to NUM_TRANSLATION_COORDS.
    • getTranslationX

      public double getTranslationX()
      Returns current x coordinate translation assigned to this transformation.
      Returns:
      X coordinate translation.
    • setTranslationX

      public void setTranslationX(double translationX)
      Sets x coordinate translation to be made by this transformation.
      Parameters:
      translationX - X coordinate translation to be set.
    • getTranslationY

      public double getTranslationY()
      Returns current y coordinate translation assigned to this transformation.
      Returns:
      Y coordinate translation.
    • setTranslationY

      public void setTranslationY(double translationY)
      Sets y coordinate translation to be made by this transformation.
      Parameters:
      translationY - Y coordinate translation to be set.
    • setTranslation

      public void setTranslation(double translationX, double translationY)
      Sets x, y coordinates of translation to be made by this transformation.
      Parameters:
      translationX - translation x coordinate to be set.
      translationY - translation y coordinate to be set.
    • setTranslation

      public void setTranslation(Point2D translation)
      Sets x, y coordinates of translation to be made by this transformation.
      Parameters:
      translation - translation to be set.
    • getTranslationPoint

      public Point2D getTranslationPoint()
      Gets x, y coordinates of translation to be made by this transformation as a new point.
      Returns:
      a new point containing translation coordinates.
    • getTranslationPoint

      public void getTranslationPoint(Point2D out)
      Gets x, y coordinates of translation to be made by this transformation and stores them into provided point.
      Parameters:
      out - point where translation coordinates will be stored.
    • addTranslationX

      public void addTranslationX(double translationX)
      Adds provided x coordinate to current translation assigned to this transformation.
      Parameters:
      translationX - X coordinate to be added to current translation.
    • addTranslationY

      public void addTranslationY(double translationY)
      Adds provided y coordinate to current translation assigned to this transformation.
      Parameters:
      translationY - Y coordinate to be added to current translation.
    • addTranslation

      public void addTranslation(double translationX, double translationY)
      Adds provided coordinates to current translation assigned to this transformation.
      Parameters:
      translationX - x coordinate to be added to current translation.
      translationY - y coordinate to be added to current translation.
    • addTranslation

      public void addTranslation(Point2D translation)
      Adds provided coordinates to current translation assigned to this transformation.
      Parameters:
      translation - x, y coordinates to be added to current translation.
    • asMatrix

      public com.irurueta.algebra.Matrix asMatrix()
      Represents this transformation as a 3x3 matrix. A point can be transformed as T * p, where T is the transformation matrix and p is a point expressed as an homogeneous vector.
      Specified by:
      asMatrix in class Transformation2D
      Returns:
      This transformation in matrix form.
    • asMatrix

      public void asMatrix(com.irurueta.algebra.Matrix m)
      Represents this transformation as a 3x3 matrix and stores the result in provided instance.
      Specified by:
      asMatrix in class Transformation2D
      Parameters:
      m - instance where transformation matrix will be stored.
      Throws:
      IllegalArgumentException - raised if provided instance is not a 3x3 matrix.
    • transform

      public void transform(Point2D inputPoint, Point2D outputPoint)
      Transforms input point using this transformation and stores the result in provided output points.
      Specified by:
      transform in class Transformation2D
      Parameters:
      inputPoint - point to be transformed.
      outputPoint - instance where transformed point data will be stored.
    • transform

      public void transform(Conic inputConic, Conic outputConic) throws NonSymmetricMatrixException
      Transforms a conic using this transformation and stores the result into provided output conic.
      Specified by:
      transform in class Transformation2D
      Parameters:
      inputConic - conic to be transformed.
      outputConic - instance where data of transformed conic will be stored.
      Throws:
      NonSymmetricMatrixException - raised if due to numerical precision the resulting output conic matrix is not considered to be symmetric.
    • transform

      public void transform(DualConic inputDualConic, DualConic outputDualConic) throws NonSymmetricMatrixException
      Transforms a dual conic using this transformation and stores the result into provided output dual conic.
      Specified by:
      transform in class Transformation2D
      Parameters:
      inputDualConic - dual conic to be transformed.
      outputDualConic - instance where data of transformed dual conic will be stored.
      Throws:
      NonSymmetricMatrixException - raised if due to numerical precision the resulting output dual conic matrix is not considered to be symmetric.
    • transform

      public void transform(Line2D inputLine, Line2D outputLine)
      Transforms provided input line using this transformation and stores the result into provided output line instance.
      Specified by:
      transform in class Transformation2D
      Parameters:
      inputLine - line to be transformed.
      outputLine - instance where data of transformed line will be stored.
    • toMetric

      public MetricTransformation2D toMetric()
      Converts this transformation into a metric transformation.
      Returns:
      this transformation converted into a metric transformation.
    • inverse

      public void inverse()
      Inverses this transformation.
    • inverseAndReturnNew

      public Transformation2D inverseAndReturnNew()
      Computes the inverse of this transformation and returns the result as a new transformation instance.
      Returns:
      inverse transformation.
    • combine

      public void combine(EuclideanTransformation2D transformation)
      Combines this transformation with provided transformation. The combination is equivalent to multiplying the matrix of this transformation with the matrix of provided transformation.
      Parameters:
      transformation - transformation to be combined with.
    • combineAndReturnNew

      public EuclideanTransformation2D combineAndReturnNew(EuclideanTransformation2D transformation)
      Combines this transformation with provided transformation and returns the result as a new transformation instance. The combination is equivalent to multiplying the matrix of this transformation with the matrix of provided transformation.
      Parameters:
      transformation - transformation to be combined with.
      Returns:
      a new transformation resulting of the combination with this transformation and provided transformation.
    • setTransformationFromPoints

      public void setTransformationFromPoints(Point2D inputPoint1, Point2D inputPoint2, Point2D inputPoint3, Point2D outputPoint1, Point2D outputPoint2, Point2D outputPoint3) throws CoincidentPointsException
      Estimates this transformation internal parameters by using 3 corresponding original and transformed points.
      Parameters:
      inputPoint1 - 1st input point.
      inputPoint2 - 2nd input point.
      inputPoint3 - 3rd input point.
      outputPoint1 - 1st transformed point corresponding to 1st input point.
      outputPoint2 - 2nd transformed point corresponding to 2nd input point.
      outputPoint3 - 3rd transformed point corresponding to 3rd input point.
      Throws:
      CoincidentPointsException - raised if transformation cannot be estimated for some reason (point configuration degeneracy, duplicate points or numerical instabilities).
    • inverse

      protected void inverse(EuclideanTransformation2D result)
      Computes the inverse of this transformation and stores the result in provided instance.
      Parameters:
      result - instance where inverse transformation will be stored.
    • combine

      private void combine(EuclideanTransformation2D inputTransformation, EuclideanTransformation2D outputTransformation)
      Combines this transformation with provided input transformation and stores the result into provided output transformation. The combination is equivalent to multiplying the matrix of this transformation with the matrix of provided input transformation.
      Parameters:
      inputTransformation - transformation to be combined with.
      outputTransformation - transformation where result will be stored.
    • internalSetTransformationFromPoints

      private void internalSetTransformationFromPoints(Point2D inputPoint1, Point2D inputPoint2, Point2D inputPoint3, Point2D outputPoint1, Point2D outputPoint2, Point2D outputPoint3) throws CoincidentPointsException
      Estimates this transformation internal parameters by using 3 corresponding original and transformed points.
      Parameters:
      inputPoint1 - 1st input point.
      inputPoint2 - 2nd input point.
      inputPoint3 - 3rd input point.
      outputPoint1 - 1st transformed point corresponding to 1st input point.
      outputPoint2 - 2nd transformed point corresponding to 2nd input point.
      outputPoint3 - 3rd transformed point corresponding to 3rd input point.
      Throws:
      CoincidentPointsException - raised if transformation cannot be estimated for some reason (point configuration degeneracy, duplicate points or numerical instabilities).