Class InhomogeneousPoint2D

java.lang.Object
com.irurueta.geometry.Point2D
com.irurueta.geometry.InhomogeneousPoint2D
All Implemented Interfaces:
Point<Point2D>, Serializable

public class InhomogeneousPoint2D extends Point2D implements Serializable
Subclass of Point2D defining an inhomogeneous 2D point. An inhomogeneous 2D point is defined by two coordinates: (x, y), where x and y are the horizontal and vertical coordinates, respectively. Homogeneous 2D points can be transformed into inhomogeneous ones by normalizing both x and y coordinates by the w factor as follows: Homogeneous 2d point (x,y,w) -< Inhomogeneous 2D point (x/w,y/w). Note that if and homogeneous 2D point is at infinity (w=0), its corresponding inhomogeneous point will be at infinity by setting (x=inf,y=inf). Because of this, and because of machine precision, usually Homogeneous points are better suited when working at far distances or for numerical purposes, and their inhomogeneous counterparts are better suited when computing Euclidean distances, etc.
See Also:
  • Field Details

    • x

      private double x
      Defines the X coordinate of an inhomogeneous 2D point.
    • y

      private double y
      Defines the Y coordinate of an inhomogeneous 2D point.
  • Constructor Details

    • InhomogeneousPoint2D

      public InhomogeneousPoint2D()
      Empty constructor.
    • InhomogeneousPoint2D

      public InhomogeneousPoint2D(double[] v)
      Constructor of this class. This constructor sets a new inhomogeneous v array containing the coordinates X and Y of the given point.
      Parameters:
      v - Array of length 2 containing the 2D coordinates of an inhomogeneous point.
      Throws:
      IllegalArgumentException - Raised when the size of the array is not 2.
    • InhomogeneousPoint2D

      public InhomogeneousPoint2D(double x, double y)
      Constructor of this class. This constructor sets a new inhomogeneous 2D point using the coordinates x and y of the given point.
      Parameters:
      x - X coordinate of the given 2D point.
      y - Y coordinate of the given 2D point.
    • InhomogeneousPoint2D

      public InhomogeneousPoint2D(Point2D point)
      This constructor sets a new inhomogeneous 2D point using as initialization provided Point2D instance.
      Parameters:
      point - Point to initialize new instance to.
  • Method Details

    • getX

      public double getX()
      Returns the X coordinate of the given homogeneous 2D point instance.
      Returns:
      X coordinate.
    • setX

      public void setX(double x)
      Sets the X coordinate of this homogeneous point.
      Parameters:
      x - X coordinate.
    • getY

      public double getY()
      Returns the Y coordinate of the given homogeneous 2D point instance.
      Returns:
      Y coordinate.
    • setY

      public void setY(double y)
      Sets the Y coordinate of this homogeneous point.
      Parameters:
      y - Y coordinate.
    • setCoordinates

      public void setCoordinates(double x, double y)
      Sets the coordinates of this inhomogeneous 2D point by using provided X and Y coordinates.
      Parameters:
      x - X coordinate.
      y - Y coordinate.
    • setCoordinates

      public final void setCoordinates(double[] v)
      Sets the coordinates of a 2D point using an array containing its coordinates.
      Specified by:
      setCoordinates in class Point2D
      Parameters:
      v - Array containing the coordinates of the point.
      Throws:
      IllegalArgumentException - Raised if provided array does not have a valid size.
    • setCoordinates

      public final void setCoordinates(Point2D point)
      Sets coordinates of this instance using the coordinates of provided 2D point.
      Specified by:
      setCoordinates in class Point2D
      Parameters:
      point - Input point.
    • getHomX

      public double getHomX()
      Returns X homogeneous coordinate of this 2d point.
      Specified by:
      getHomX in class Point2D
      Returns:
      X homogeneous coordinate.
    • getHomY

      public double getHomY()
      Returns Y homogeneous coordinate of this 2d point.
      Specified by:
      getHomY in class Point2D
      Returns:
      Y homogeneous coordinate.
    • getHomW

      public double getHomW()
      Returns W homogeneous coordinate of this 2d point.
      Specified by:
      getHomW in class Point2D
      Returns:
      W homogeneous coordinate.
    • setHomogeneousCoordinates

      public void setHomogeneousCoordinates(double homX, double homY, double homW)
      Sets coordinates of this 2d point instance using provided homogeneous coordinates.
      Specified by:
      setHomogeneousCoordinates in class Point2D
      Parameters:
      homX - x homogeneous coordinate.
      homY - y homogeneous coordinate.
      homW - w homogeneous coordinate.
    • getInhomX

      public double getInhomX()
      Returns X inhomogeneous coordinate of this 2d point.
      Specified by:
      getInhomX in class Point2D
      Returns:
      X inhomogeneous coordinate.
    • setInhomX

      public void setInhomX(double inhomX)
      Sets X inhomogeneous coordinate of this 2d point.
      Specified by:
      setInhomX in class Point2D
      Parameters:
      inhomX - inhomogeneous coordinate.
    • getInhomY

      public double getInhomY()
      Returns Y inhomogeneous coordinate of this 2d point.
      Specified by:
      getInhomY in class Point2D
      Returns:
      Y inhomogeneous coordinate.
    • setInhomY

      public void setInhomY(double inhomY)
      Sets Y inhomogeneous coordinate of this 2d point.
      Specified by:
      setInhomY in class Point2D
      Parameters:
      inhomY - Y inhomogeneous coordinate.
    • setInhomogeneousCoordinates

      public void setInhomogeneousCoordinates(double inhomX, double inhomY)
      Sets coordinates of this 2d point instance using provided inhomogeneous coordinates.
      Specified by:
      setInhomogeneousCoordinates in class Point2D
      Parameters:
      inhomX - x inhomogeneous coordinate.
      inhomY - y inhomogeneous coordinate.
    • equals

      public boolean equals(Object obj)
      Checks if provided object equals current 2D point.
      Overrides:
      equals in class Point2D
      Parameters:
      obj - Object to compare.
      Returns:
      True if both objects are considered to be equal, false otherwise.
    • hashCode

      public int hashCode()
      Returns hash code value.
      Specified by:
      hashCode in class Point2D
      Returns:
      Hash code value.
    • equals

      public boolean equals(Point2D point, double threshold)
      Checks if the homogeneous 2d point described by this instance equals the input Point2D (using a comparison threshold).
      Specified by:
      equals in class Point2D
      Parameters:
      point - Point that will be compared to.
      threshold - threshold grade of tolerance to determine whether the points are equal or not. It is used because due to machine precision, the values might not be exactly equal (if not provided DEFAULT_COMPARISON_THRESHOLD is used).
      Returns:
      True if current point and input point are the same, false otherwise.
      Throws:
      IllegalArgumentException - Raised if threshold is negative.
    • equals

      public boolean equals(HomogeneousPoint2D point, double threshold)
      Checks if the homogeneous 2d point described by this instance equals the input HomogeneousPoint2d (using a comparison threshold).
      Parameters:
      point - Point that will be compared to.
      threshold - threshold grade of tolerance to determine whether the points are equal or not. It is used because due to machine precision, the values might not be exactly equal (if not provided DEFAULT_COMPARISON_THRESHOLD is used).
      Returns:
      True if current point and input point are the same, false otherwise.
      Throws:
      IllegalArgumentException - Raised if threshold is negative.
    • equals

      public boolean equals(HomogeneousPoint2D point)
      Checks if the homogeneous 2d point described by this instance equals the input HomogeneousPoint2d (using a comparison threshold).
      Parameters:
      point - Point that will be compared to.
      Returns:
      True if current point and input point are the same, false otherwise.
    • equals

      public boolean equals(InhomogeneousPoint2D point, double threshold)
      Checks if the homogeneous 2d point described by this instance equals the input InhomogeneousPoint2d (using a comparison threshold).
      Parameters:
      point - Point that will be compared to.
      threshold - threshold grade of tolerance to determine whether the points are equal or not. It is used because due to machine precision, the values might not be exactly equal (if not provided DEFAULT_COMPARISON_THRESHOLD is used).
      Returns:
      True if current point and input point are the same, false otherwise.
      Throws:
      IllegalArgumentException - Raised if threshold is negative.
    • equals

      public boolean equals(InhomogeneousPoint2D point)
      Checks if the homogeneous 2d point described by this instance equals the input InhomogeneousPoint2d (using a comparison threshold).
      Parameters:
      point - Point that will be compared to.
      Returns:
      True if current point and input point are the same, false otherwise.
    • isAtInfinity

      public boolean isAtInfinity()
      Checks whether this Point2D is at infinity or not.
      Specified by:
      isAtInfinity in class Point2D
      Returns:
      True if the point is at infinity. False otherwise.
    • getType

      public CoordinatesType getType()
      Returns the type of coordinates used to represent a Point2D.
      Specified by:
      getType in class Point2D
      Returns:
      Type of coordinates of this 2d point.
    • toHomogeneous

      public HomogeneousPoint2D toHomogeneous()
      Converts this instance into an homogeneous 2D point and returns the result as a new homogeneous 2D point instance.
      Returns:
      Converts and returns this point as an homogeneous 2D point.
    • asArray

      public double[] asArray()
      Returns an array containing the coordinates of this Point2D.
      Specified by:
      asArray in class Point2D
      Returns:
      Array containing coordinates of this Point2D.
    • asArray

      public void asArray(double[] array)
      Uses provided array to store the coordinates of this InhomogeneousPoint2D
      Specified by:
      asArray in class Point2D
      Parameters:
      array - Array where coordinates will be stored.
      Throws:
      IllegalArgumentException - Raised if length of array is not 2.