Class Point

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable

    public class Point
    extends java.lang.Object
    implements java.lang.Cloneable, java.io.Serializable
    Represents a point (x, y) in 2-dimensional space. This class provides various methods for manipulating this point or creating new derived geometrical objects.
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      double x
      The x value.
      double y
      The y value.
    • Constructor Summary

      Constructors 
      Constructor Description
      Point()
      Constructs a Point at location (0,0).
      Point​(double x, double y)
      Constructs a Point at the specified x and y locations.
      Point​(Point p)
      Constructs a Point at the same location as the given Point.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      Point clone()
      Overwritten with public visibility as proposed in Cloneable.
      boolean equals​(double x, double y)
      Returns true if this Points x and y are equal to the given x and y.
      boolean equals​(java.lang.Object o)
      Test for equality.
      static Rectangle getBounds​(Point... points)
      Returns the smallest Rectangle that encloses all Points in the given sequence.
      static Point getCentroid​(Point... points)
      Computes the centroid of the given Points.
      static Point[] getConvexHull​(Point... points)
      Computes the convex hull of the given set of Points using the Graham scan algorithm.
      Point getCopy()  
      static Point[] getCopy​(Point... points)
      Copies an array of points, by copying each point contained in the array.
      Point getDifference​(Point other)
      Returns the translation required to move this Point to the other Point
      double getDistance​(Point p)
      Calculates the distance from this Point to the one specified.
      Point getNegated()
      Creates a Point with negated x and y values.
      static Point[] getReverseCopy​(Point... points)
      Returns a copy of the given array of points, where the points are placed in reversed order.
      Point getScaled​(double factor)
      Creates a new Point from this Point by scaling by the specified amount.
      Point getScaled​(double xFactor, double yFactor)
      Creates a new Point from this Point by scaling by the specified values.
      Point getScaled​(double factorX, double factorY, Point center)
      Returns a new Point scaled by the given scale-factors.
      Point getTransformed​(AffineTransform transformation)
      Transforms a copy of this Point using the given AffineTransform.
      Point getTranslated​(double x, double y)
      Creates a new Point which is translated by the specified x and y values
      Point getTranslated​(Dimension d)
      Creates a new Point which is translated by the values of the input Dimension.
      Point getTranslated​(Point p)
      Creates a new Point which is translated by the values of the provided Point.
      Point getTransposed()
      Creates a new Point with the transposed values of this Point.
      int hashCode()  
      static Point max​(Point p1, Point p2)
      Creates a new Point representing the MAX of two provided Points.
      static Point min​(Point p1, Point p2)
      Creates a new Point representing the MIN of two provided Points.
      static Point nearest​(Point referencePoint, Point... candidates)
      Returns (one of) the candidate(s) with minimal distance to the given reference point.
      Point negate()
      Negates the x and y values of this Point.
      static void rotateCCW​(Point[] points, Angle angle, double cx, double cy)
      Rotates (in-place) the given Points counter-clock-wise (CCW) by the specified Angle around the given center Point.
      static void rotateCW​(Point[] points, Angle angle, double cx, double cy)
      Rotates (in-place) the given Points clock-wise (CW) by the specified Angle around the given center Point.
      Point scale​(double factor)
      Scales this Point by the specified amount.
      Point scale​(double xFactor, double yFactor)
      Scales this Point by the specified values.
      Point scale​(double factorX, double factorY, Point center)
      Scales this Point by the given scale-factors.
      static void scale​(Point[] points, double fx, double fy, double cx, double cy)
      Scales the given array of Points by the given x and y scale factors around the given center Point (cx, cy).
      Point setLocation​(double x, double y)
      Sets the location of this Point to the provided x and y locations.
      Point setLocation​(Point p)
      Sets the location of this Point to the specified Point.
      Point setX​(double x)
      Sets the x value of this Point to the given value.
      Point setY​(double y)
      Sets the y value of this Point to the given value;
      java.lang.String toString()  
      Point transform​(AffineTransform transformation)
      Transforms this Point in-place using the given AffineTransform.
      Point translate​(double dx, double dy)
      Shifts this Point by the values supplied along each axes, and returns this for convenience.
      Point translate​(Dimension d)
      Shifts this Point by the values of the Dimension along each axis, and returns this for convenience.
      Point translate​(Point p)
      Shifts the location of this Point by the location of the input Point along each of the axes, and returns this for convenience.
      static void translate​(Point[] points, double dx, double dy)
      Translates an array of Points by translating each individual point by a given x and y offset.
      Point transpose()
      Transposes this object.
      double x()
      Returns the x value of this Point.
      double y()
      Returns the y value of this Point.
      • Methods inherited from class java.lang.Object

        finalize, getClass, notify, notifyAll, wait, wait, wait
    • Field Detail

      • x

        public double x
        The x value.
      • y

        public double y
        The y value.
    • Constructor Detail

      • Point

        public Point()
        Constructs a Point at location (0,0).
      • Point

        public Point​(double x,
                     double y)
        Constructs a Point at the specified x and y locations.
        Parameters:
        x - x value
        y - y value
      • Point

        public Point​(Point p)
        Constructs a Point at the same location as the given Point.
        Parameters:
        p - Point from which the initial values are taken.
    • Method Detail

      • getBounds

        public static Rectangle getBounds​(Point... points)
        Returns the smallest Rectangle that encloses all Points in the given sequence. Note that the right and bottom borders of a Rectangle are regarded as being part of the Rectangle.
        Parameters:
        points - a sequence of Points which should all be contained in the to be computed Rectangle
        Returns:
        a new Rectangle, which is the smallest Rectangle that contains all given Points
      • getCentroid

        public static Point getCentroid​(Point... points)
        Computes the centroid of the given Points. The centroid is the "center of gravity", i.e. assuming the Polygon spanned by the Points is made of a material of constant density, it will be in a balanced state, if you put it on a pin that is placed exactly on its centroid.
        Parameters:
        points - The array of Points for which the centroid is computed.
        Returns:
        the center Point (or centroid) of the given Point s
      • getConvexHull

        public static Point[] getConvexHull​(Point... points)
        Computes the convex hull of the given set of Points using the Graham scan algorithm.
        Parameters:
        points - the set of Points to calculate the convex hull for
        Returns:
        the convex hull of the given set of Points
      • getCopy

        public static final Point[] getCopy​(Point... points)
        Copies an array of points, by copying each point contained in the array.
        Parameters:
        points - the array of Points to copy
        Returns:
        a new array, which contains copies of the given Points at the respective index positions
      • getReverseCopy

        public static final Point[] getReverseCopy​(Point... points)
        Returns a copy of the given array of points, where the points are placed in reversed order.
        Parameters:
        points - the array of Points to reverse
        Returns:
        a new array, which contains a copy of each Point of the given array of points at the respective reverse index
      • max

        public static Point max​(Point p1,
                                Point p2)
        Creates a new Point representing the MAX of two provided Points.
        Parameters:
        p1 - first point
        p2 - second point
        Returns:
        A new Point representing the Max()
      • min

        public static Point min​(Point p1,
                                Point p2)
        Creates a new Point representing the MIN of two provided Points.
        Parameters:
        p1 - first point
        p2 - second point
        Returns:
        A new Point representing the Min()
      • nearest

        public static Point nearest​(Point referencePoint,
                                    Point... candidates)
        Returns (one of) the candidate(s) with minimal distance to the given reference point.
        Parameters:
        referencePoint - The reference point, to which distance has to be minimal.
        candidates - The points from which to choose the one with minimal distance.
        Returns:
        One of the candidates with minimal distance.
      • rotateCCW

        public static void rotateCCW​(Point[] points,
                                     Angle angle,
                                     double cx,
                                     double cy)
        Rotates (in-place) the given Points counter-clock-wise (CCW) by the specified Angle around the given center Point.
        Parameters:
        points - The array of Points to rotate.
        angle - The rotation Angle.
        cx - The x-coordinate of the rotation's pivot point.
        cy - The y-coordinate of the rotation's pivot point.
      • rotateCW

        public static void rotateCW​(Point[] points,
                                    Angle angle,
                                    double cx,
                                    double cy)
        Rotates (in-place) the given Points clock-wise (CW) by the specified Angle around the given center Point.
        Parameters:
        points - The array of Points to rotate.
        angle - The rotation Angle.
        cx - The x-coordinate of the rotation's pivot point.
        cy - The y-coordinate of the rotation's pivot point.
      • scale

        public static void scale​(Point[] points,
                                 double fx,
                                 double fy,
                                 double cx,
                                 double cy)
        Scales the given array of Points by the given x and y scale factors around the given center Point (cx, cy).
        Parameters:
        points - The array of Points to scale.
        fx - The horizontal scale factor.
        fy - Ther vertical scale factor.
        cx - The x-coordinate of the scale's pivot point.
        cy - The y-coordinate of the scale's pivot point.
      • translate

        public static void translate​(Point[] points,
                                     double dx,
                                     double dy)
        Translates an array of Points by translating each individual point by a given x and y offset.
        Parameters:
        points - an array of points to translate
        dx - the x offset to translate each Point by
        dy - the y offset to translate each Point by
      • clone

        public Point clone()
        Overwritten with public visibility as proposed in Cloneable.
        Overrides:
        clone in class java.lang.Object
      • equals

        public boolean equals​(double x,
                              double y)
        Returns true if this Points x and y are equal to the given x and y.
        Parameters:
        x - the x value
        y - the y value
        Returns:
        true if this point's x and y are equal to those given.
      • equals

        public boolean equals​(java.lang.Object o)
        Test for equality.
        Overrides:
        equals in class java.lang.Object
        Parameters:
        o - Object being tested for equality
        Returns:
        true if both x and y values are equal
      • getCopy

        public Point getCopy()
        Returns:
        a copy of this Point
      • getDifference

        public Point getDifference​(Point other)
        Returns the translation required to move this Point to the other Point
        Parameters:
        other - the Point to get the difference from
        Returns:
        the translation required to move this Point to the other Point
      • getDistance

        public double getDistance​(Point p)
        Calculates the distance from this Point to the one specified.
        Parameters:
        p - The Point being compared to this
        Returns:
        The distance
      • getNegated

        public Point getNegated()
        Creates a Point with negated x and y values.
        Returns:
        A new Point
      • getScaled

        public Point getScaled​(double factor)
        Creates a new Point from this Point by scaling by the specified amount.
        Parameters:
        factor - scale factor
        Returns:
        A new Point
      • getScaled

        public Point getScaled​(double xFactor,
                               double yFactor)
        Creates a new Point from this Point by scaling by the specified values.
        Parameters:
        xFactor - horizontal scale factor
        yFactor - vertical scale factor
        Returns:
        A new Point
      • getScaled

        public Point getScaled​(double factorX,
                               double factorY,
                               Point center)
        Returns a new Point scaled by the given scale-factors. The scaling is performed relative to the given Point center.
        Parameters:
        factorX - The horizontal scale-factor
        factorY - The vertical scale-factor
        center - The relative Point for the scaling
        Returns:
        The new, scaled Point
      • getTranslated

        public Point getTranslated​(Dimension d)
        Creates a new Point which is translated by the values of the input Dimension.
        Parameters:
        d - Dimension which provides the translation amounts.
        Returns:
        A new Point
      • getTranslated

        public Point getTranslated​(double x,
                                   double y)
        Creates a new Point which is translated by the specified x and y values
        Parameters:
        x - horizontal component
        y - vertical component
        Returns:
        A new Point
      • getTranslated

        public Point getTranslated​(Point p)
        Creates a new Point which is translated by the values of the provided Point.
        Parameters:
        p - Point which provides the translation amounts.
        Returns:
        A new Point
      • getTransposed

        public Point getTransposed()
        Creates a new Point with the transposed values of this Point. Can be useful in orientation change calculations.
        Returns:
        A new Point
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
        See Also:
        Object.hashCode()
      • negate

        public Point negate()
        Negates the x and y values of this Point.
        Returns:
        this for convenience
      • scale

        public Point scale​(double factor)
        Scales this Point by the specified amount.
        Parameters:
        factor - scale factor
        Returns:
        this for convenience
      • scale

        public Point scale​(double xFactor,
                           double yFactor)
        Scales this Point by the specified values.
        Parameters:
        xFactor - horizontal scale factor
        yFactor - vertical scale factor
        Returns:
        this for convenience
      • scale

        public Point scale​(double factorX,
                           double factorY,
                           Point center)
        Scales this Point by the given scale-factors. The scaling is performed relative to the given Point center.
        Parameters:
        factorX - The horizontal scale-factor
        factorY - The vertical scale-factor
        center - The relative Point for the scaling
        Returns:
        this for convenience
      • setLocation

        public Point setLocation​(double x,
                                 double y)
        Sets the location of this Point to the provided x and y locations.
        Parameters:
        x - the x location
        y - the y location
        Returns:
        this for convenience
      • setLocation

        public Point setLocation​(Point p)
        Sets the location of this Point to the specified Point.
        Parameters:
        p - the Location
        Returns:
        this for convenience
      • setX

        public Point setX​(double x)
        Sets the x value of this Point to the given value.
        Parameters:
        x - The new x value
        Returns:
        this for convenience
      • setY

        public Point setY​(double y)
        Sets the y value of this Point to the given value;
        Parameters:
        y - The new y value
        Returns:
        this for convenience
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
        See Also:
        Object.toString()
      • translate

        public Point translate​(Dimension d)
        Shifts this Point by the values of the Dimension along each axis, and returns this for convenience.
        Parameters:
        d - Dimension by which the origin is being shifted.
        Returns:
        this for convenience
      • translate

        public Point translate​(double dx,
                               double dy)
        Shifts this Point by the values supplied along each axes, and returns this for convenience.
        Parameters:
        dx - Amount by which point is shifted along X axis.
        dy - Amount by which point is shifted along Y axis.
        Returns:
        this for convenience
      • translate

        public Point translate​(Point p)
        Shifts the location of this Point by the location of the input Point along each of the axes, and returns this for convenience.
        Parameters:
        p - Point to which the origin is being shifted.
        Returns:
        this for convenience
      • transpose

        public Point transpose()
        Transposes this object. X and Y values are exchanged.
        Returns:
        this for convenience
      • x

        public double x()
        Returns the x value of this Point.
        Returns:
        The current x value
      • y

        public double y()
        Returns the y value of this Point.
        Returns:
        The current y value