Class Bounds2d

    • Constructor Detail

      • Bounds2d

        public Bounds2d​(double minX,
                        double maxX,
                        double minY,
                        double maxY)
                 throws IllegalArgumentException
        Construct a Bounds2d by providing its lower and upper bounds in both dimensions.
        Parameters:
        minX - double; the lower bound for x
        maxX - double; the upper bound for x
        minY - double; the lower bound for y
        maxY - double; the upper bound for y
        Throws:
        IllegalArgumentException - when a lower bound is larger than the corresponding upper bound, or any of the bounds is NaN
      • Bounds2d

        public Bounds2d​(double deltaX,
                        double deltaY)
        Constructs a new Bounds2d around the origin (0, 0).
        Parameters:
        deltaX - double; the deltaX value around the origin
        deltaY - double; the deltaY value around the origin
        Throws:
        IllegalArgumentException - when one of the delta values is less than zero
      • Bounds2d

        public Bounds2d​(Iterator<? extends Point2d> points)
        Construct a Bounds2d from some collection of points, finding the lowest and highest x and y coordinates.
        Parameters:
        points - Iterator<? extends Point2d>; Iterator that will generate all the points for which to construct a Bounds2d
        Throws:
        NullPointerException - when points is null
        IllegalArgumentException - when the iterator provides zero points
      • Bounds2d

        public Bounds2d​(Drawable2d drawable2d)
                 throws NullPointerException
        Construct a Bounds2d for a Drawable2d.
        Parameters:
        drawable2d - Drawable2d; any object that implements the Drawable2d interface
        Throws:
        NullPointerException - when drawable2d is null
    • Method Detail

      • pointsOf

        public static Iterator<Point2d> pointsOf​(Drawable2d... drawable2d)
        Return an iterator that will return all points of one or more Drawable objects.
        Parameters:
        drawable2d - Drawable2d...; the Drawable objects
        Returns:
        Iterator<P>; iterator that will return all points of the Drawable objects
        Throws:
        NullPointerException - when drawable is null, or contains a null value
        IllegalArgumentException - when drawable is empty
      • getPoints

        public Iterator<Point2d> getPoints()
        Retrieve, or generate all points that make up the object.
        Specified by:
        getPoints in interface Drawable<Point2d>
        Returns:
        Iterable<Point2d>; an iterator that generates all points that make up the object
      • size

        public int size()
        Retrieve the number of points that make up the object.
        Specified by:
        size in interface Drawable<Point2d>
        Returns:
        int; the number of points that make up the object
      • contains

        public boolean contains​(double x,
                                double y)
                         throws IllegalArgumentException
        Check if this Bounds2d contains a point. Contains considers a point on the border of this Bounds2d to be outside.
        Parameters:
        x - double; the x-coordinate of the point
        y - double; the y-coordinate of the point
        Returns:
        boolean; whether this Bounds2d contains the point
        Throws:
        IllegalArgumentException - when any of the coordinates is NaN
      • contains

        public boolean contains​(Point2d point)
        Check if a point is contained in this Bounds.
        Specified by:
        contains in interface Bounds<Bounds2d,​Point2d,​Drawable2d>
        Parameters:
        point - P; the point
        Returns:
        boolean; true if the point is within this Bounds; false if the point is not within this Bounds, or on an edge of this Bounds
      • contains

        public boolean contains​(Drawable2d drawable)
                         throws NullPointerException
        Check if this Bounds completely contains a Drawable. If any point of the Drawable lies on an edge (2d) or surface (3d) of this Bounds, this method returns false.
        Specified by:
        contains in interface Bounds<Bounds2d,​Point2d,​Drawable2d>
        Parameters:
        drawable - D; the object for which to check if it is completely contained within this Bounds.
        Returns:
        boolean; false if any point of D is on or outside one of the borders of this Bounds; true when all points of D are contained within this Bounds.
        Throws:
        NullPointerException - when drawable2d is null
      • covers

        public boolean covers​(double x,
                              double y)
        Check if this Bounds2d covers a point. Covers returns true when the point is on, or inside this Bounds2d.
        Parameters:
        x - double; the x-coordinate of the point
        y - double; the y-coordinate of the point
        Returns:
        boolean; whether this Bounds2d, including its borders, contains the point
      • covers

        public boolean covers​(Point2d point)
        Check if this Bounds covers or touches a point.
        Specified by:
        covers in interface Bounds<Bounds2d,​Point2d,​Drawable2d>
        Parameters:
        point - P; the Point for which to check if it is covered/touched by this Bounds
        Returns:
        boolean; whether this Bounds covers or touches the point
      • covers

        public boolean covers​(Drawable2d drawable)
                       throws NullPointerException
        Check if no part of a Drawable is outside this Bounds. The edges/surfaces of this Bounds are considered inside.
        Specified by:
        covers in interface Bounds<Bounds2d,​Point2d,​Drawable2d>
        Parameters:
        drawable - D; the Drawable for which to check if it is contained within this Bounds
        Returns:
        boolean; whether this Bounds contains the provided Bounds, including overlapping borders
        Throws:
        NullPointerException - when otherBounds is null
      • disjoint

        public boolean disjoint​(Drawable2d drawable)
                         throws NullPointerException
        Return whether a Drawable is disjoint from this Bounds. Only touching at an edge is considered disjoint. A Drawable that completely surrounds this Drawable is not disjoint.
        Specified by:
        disjoint in interface Bounds<Bounds2d,​Point2d,​Drawable2d>
        Parameters:
        drawable - D; the drawable
        Returns:
        boolean; true if the drawable is disjoint from this Bounds, or only touches an edge; false if any point of the drawable is inside this Bounds, or the drawable surrounds this Bounds
        Throws:
        NullPointerException - when bounds is null
      • intersects

        public boolean intersects​(Bounds2d otherBounds2d)
                           throws NullPointerException
        Return whether this Bounds intersects another Bounds. Only touching at an edge is not seen as intersecting.
        Specified by:
        intersects in interface Bounds<Bounds2d,​Point2d,​Drawable2d>
        Parameters:
        otherBounds2d - B; the other Bounds
        Returns:
        boolean; whether this bounding box/rectangle intersects the other Bounds
        Throws:
        NullPointerException - when otherBounds is null
      • intersection

        public Bounds2d intersection​(Bounds2d otherBounds2d)
        Return the intersecting Bounds of this Bounds and another Bounds. Touching at the edge is not seen as intersecting. In case there is no intersection, null is returned.
        Specified by:
        intersection in interface Bounds<Bounds2d,​Point2d,​Drawable2d>
        Parameters:
        otherBounds2d - B; the other Bounds
        Returns:
        Bounds; the intersecting Bounds of this Bounds and another Bounds. Touching at the edge is not seen as intersecting. If not intersecting; null is returned
      • toRectangle2D

        public Rectangle2D toRectangle2D()
        Return an AWT Rectangle2D that covers the same area as this Bounds2d.
        Returns:
        Rectangle2D; the rectangle that covers the same area as this Bounds2d
      • getMinX

        public double getMinX()
        Return the absolute lower bound for x.
        Specified by:
        getMinX in interface Bounds<Bounds2d,​Point2d,​Drawable2d>
        Returns:
        double; the absolute lower bound for x
      • getMaxX

        public double getMaxX()
        Return the absolute upper bound for x.
        Specified by:
        getMaxX in interface Bounds<Bounds2d,​Point2d,​Drawable2d>
        Returns:
        double; the absolute upper bound for x
      • getMinY

        public double getMinY()
        Return the absolute lower bound for y.
        Specified by:
        getMinY in interface Bounds<Bounds2d,​Point2d,​Drawable2d>
        Returns:
        double; the absolute lower bound for y
      • getMaxY

        public double getMaxY()
        Return the absolute upper bound for y.
        Specified by:
        getMaxY in interface Bounds<Bounds2d,​Point2d,​Drawable2d>
        Returns:
        double; the absolute upper bound for y
      • getArea

        public double getArea()
        Return the area of this Bounds2d.
        Returns:
        double; the area of this Bounds2d
      • getBounds

        public Bounds2d getBounds()
        Retrieve the bounding rectangle of the object.
        Specified by:
        getBounds in interface Drawable2d
        Returns:
        Bounds2d; the bounding box of the object
      • toString

        public String toString()
        Produce a string describing the Drawable using default conversion for the (double) coordinate values. Regrettably, it is not allowed to provide a default implementation here.
        Specified by:
        toString in interface Drawable<Point2d>
        Overrides:
        toString in class Object
        Returns:
        String; a string describing the Drawable
      • toString

        public String toString​(String doubleFormat,
                               boolean doNotIncludeClassName)
        Produce a String describing the Drawable.
        Specified by:
        toString in interface Drawable<Point2d>
        Parameters:
        doubleFormat - String; a format string (something like "%6.3f") which will be used to render every coordinate value)
        doNotIncludeClassName - boolean; if true; the output of toString is not prefixed by the class name. This is useful for concatenating the textual representation of lots of Drawables (e.g. an array, or a List).
        Returns:
        String; textual representation of the Drawable
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object