|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
ObjectRectangularShape
Rectangle2D
XRectangle2D
public class XRectangle2D
Serializable rectangle capable to handle infinite values. Instead of using x,
y, width and height fields, this class uses xmin,
xmax, ymin and ymax fields. This choice provides two benefits:
contains and intersects methods since there is no
addition or subtraction to perform.
| referencing/geotk-referencing (download) | View source code for this class |
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from class Rectangle2D |
|---|
Rectangle2D.Double, Rectangle2D.Float |
| Field Summary | |
|---|---|
static Rectangle2D |
INFINITY
An immutable instance of a Rectangle2D with bounds extending toward
infinities. |
protected double |
xmax
Maximal x ordinate value. |
protected double |
xmin
Minimal x ordinate value. |
protected double |
ymax
Maximal y ordinate value. |
protected double |
ymin
Minimal y ordinate value. |
| Fields inherited from class Rectangle2D |
|---|
OUT_BOTTOM, OUT_LEFT, OUT_RIGHT, OUT_TOP |
| Constructor Summary | |
|---|---|
XRectangle2D()
Constructs a default rectangle initialized to (0,0,0,0). |
|
XRectangle2D(double x,
double y,
double width,
double height)
Construct a rectangle with the specified location and dimension. |
|
XRectangle2D(Rectangle2D rect)
Constructs a rectangle with the same coordinates than the supplied rectangle. |
|
| Method Summary | |
|---|---|
void |
add(double x,
double y)
Adds a point, specified by the arguments x and y, to this rectangle. |
void |
add(Rectangle2D rect)
Adds a Rectangle2D object to this rectangle. |
boolean |
contains(double x,
double y)
Tests if a specified coordinate is inside the boundary of this Rectangle2D. |
boolean |
contains(double x,
double y,
double width,
double height)
Tests if the interior of this rectangle entirely contains the specified set of rectangular coordinates. |
boolean |
contains(Rectangle2D rect)
Tests if the interior of this shape entirely contains the specified rectangle. |
static boolean |
containsInclusive(Rectangle2D outter,
Rectangle2D inner)
Tests if the interior of the inner rectangle is contained in the interior
and/or the edge of the outter rectangle. |
static XRectangle2D |
createFromExtremums(double xmin,
double ymin,
double xmax,
double ymax)
Creates a rectangle using maximal x and y values rather than width and height. |
Rectangle2D |
createIntersection(Rectangle2D rect)
Returns a new Rectangle2D object representing the
intersection of this rectangle with the specified one. |
Rectangle2D |
createUnion(Rectangle2D rect)
Returns a new Rectangle2D object representing the
union of this rectangle with the specified one. |
static boolean |
equalsEpsilon(Rectangle2D rect1,
Rectangle2D rect2)
Deprecated. Use your own comparison method instead, so you can specify different tolerance threshold along different axis. |
double |
getCenterX()
Returns the x ordinate of the center of the rectangle. |
double |
getCenterY()
Returns the y ordinate of the center of the rectangle. |
double |
getHeight()
Returns the height of the rectangle. |
double |
getMaxX()
Returns the maximal x ordinate value. |
double |
getMaxY()
Returns the maximal y ordinate value. |
double |
getMinX()
Returns the minimal x ordinate value. |
double |
getMinY()
Returns the minimal y ordinate value. |
double |
getWidth()
Returns the width of the rectangle. |
double |
getX()
Returns the minimal x ordinate value. |
double |
getY()
Returns the minimal y ordinate value. |
void |
intersect(Rectangle2D rect)
Intersects a Rectangle2D object with this rectangle. |
static boolean |
intersectInclusive(Rectangle2D rect1,
Rectangle2D rect2)
Tests if the interior and/or the edge of two rectangles intersect. |
static boolean |
intersectInclusive(Shape shape,
Rectangle2D rect)
Tests if the interior of the Shape intersects the interior of a specified
rectangle. |
boolean |
intersects(double x,
double y,
double width,
double height)
Tests if the interior of this rectangle intersects the interior of a specified set of rectangular coordinates. |
boolean |
intersects(Rectangle2D rect)
Tests if the interior of this shape intersects the interior of a specified rectangle. |
boolean |
isEmpty()
Determines whether this rectangle is empty. |
int |
outcode(double x,
double y)
Determines where the specified coordinates lie with respect to this rectangle. |
void |
setFrame(Rectangle2D r)
Sets the framing rectangle to the given rectangle. |
void |
setRect(double x,
double y,
double width,
double height)
Sets the location and size of this rectangle to the specified values. |
void |
setRect(Rectangle2D r)
Sets this rectangle to be the same as the specified rectangle. |
String |
toString()
Returns the String representation of this Rectangle2D. |
| Methods inherited from class Rectangle2D |
|---|
add, equals, getBounds2D, getPathIterator, getPathIterator, hashCode, intersect, intersectsLine, intersectsLine, outcode, setFrame, union |
| Methods inherited from class RectangularShape |
|---|
clone, contains, getBounds, getFrame, setFrame, setFrameFromCenter, setFrameFromCenter, setFrameFromDiagonal, setFrameFromDiagonal |
| Methods inherited from class Object |
|---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
public static final Rectangle2D INFINITY
Rectangle2D with bounds extending toward
infinities. The getMinX() and getMinY() methods return always
negative infinity while the
getMaxX() and getMaxY() methods return always
positive infinity.
This rectangle can be given as argument to the constructor for initializing a new XRectangle2D to infinite bounds.
protected double xmin
protected double ymin
protected double xmax
protected double ymax
| Constructor Detail |
|---|
public XRectangle2D()
(0,0,0,0).
public XRectangle2D(double x,
double y,
double width,
double height)
Rectangle2D
for consistency with Java2D practice.
x - Minimal x ordinate value.y - Minimal y ordinate value.width - The rectangle width.height - The rectangle height.public XRectangle2D(Rectangle2D rect)
rect - The rectangle, or null in none (in which case this constructor
is equivalents to the no-argument constructor). Use INFINITY for
initializing this XRectangle2D with infinite bounds.| Method Detail |
|---|
public static XRectangle2D createFromExtremums(double xmin,
double ymin,
double xmax,
double ymax)
xmin - Minimal x ordinate value.ymin - Minimal y ordinate value.xmax - Maximal x ordinate value.ymax - Maximal y ordinate value.
public boolean isEmpty()
isEmpty in class RectangularShapetrue if this rectangle is empty; false otherwise.public double getX()
getX in class RectangularShapepublic double getY()
getY in class RectangularShapepublic double getWidth()
getWidth in class RectangularShapepublic double getHeight()
getHeight in class RectangularShapepublic double getMinX()
getMinX in class RectangularShapepublic double getMinY()
getMinY in class RectangularShapepublic double getMaxX()
getMaxX in class RectangularShapepublic double getMaxY()
getMaxY in class RectangularShapepublic double getCenterX()
getCenterX in class RectangularShapepublic double getCenterY()
getCenterY in class RectangularShape
public void setRect(double x,
double y,
double width,
double height)
setRect in class Rectangle2Dx - The x minimal ordinate value.y - The y minimal ordinate value.width - The rectangle width.height - The rectangle height.public void setRect(Rectangle2D r)
setRect in class Rectangle2Dr - The rectangle to copy values from.public void setFrame(Rectangle2D r)
setRect(Rectangle2D). This is consistent with the default implementation of
Rectangle2D.setFrame(double, double, double, double), which delegates to the corresponding
method of setRect.
setFrame in class RectangularShape
public boolean intersects(double x,
double y,
double width,
double height)
intersects in interface Shapeintersects in class Rectangle2Dx - The x minimal ordinate value.y - The y minimal ordinate value.width - The rectangle width.height - The rectangle height.
true if this rectangle intersects the interior of the
specified set of rectangular coordinates; false otherwise.public boolean intersects(Rectangle2D rect)
intersects in interface Shapeintersects in class RectangularShaperect - The specified rectangle.
true if this shape and the specified rectangle intersect each other.intersectInclusive(Rectangle2D, Rectangle2D)
public static boolean intersectInclusive(Rectangle2D rect1,
Rectangle2D rect2)
intersects(Rectangle2D) except for the following points:
Shape contract). However, rectangle with negative width or
height are still considered as empty.This method is said inclusive because it tests bounds as closed interval rather then open interval (the default Java2D behavior). Usage of closed interval is required if at least one rectangle may be the bounding box of a perfectly horizontal or vertical line; such a bounding box has 0 width or height.
rect1 - The first rectangle to test.rect2 - The second rectangle to test.
true if the interior and/or the edge of the two specified rectangles
intersects.
public static boolean intersectInclusive(Shape shape,
Rectangle2D rect)
Shape intersects the interior of a specified
rectangle. This method might conservatively return true when there is a high
probability that the rectangle and the shape intersect, but the calculations to accurately
determine this intersection are prohibitively expensive.
This method is similar to Shape.intersects(Rectangle2D), except that
it tests also rectangle with zero width or
height (which are empty
according Shape contract). However, rectangle with negative width or height are still
considered as empty.
This method is said inclusive because it try to mimic
intersectInclusive(Rectangle2D, Rectangle2D) behavior, at
least for rectangle with zero width or height.
shape - The shape.rect - The rectangle to test for inclusion.
true if the interior of the shape and the interior of the specified
rectangle intersect, or are both highly likely to intersect.
@Deprecated
public static boolean equalsEpsilon(Rectangle2D rect1,
Rectangle2D rect2)
true if the two rectangles are equals up to an epsilon value.
rect1 - The first rectangle to test for equality.rect2 - The second rectangle to test for equality.
true if the rectangles are equal up to the tolerance value.
public boolean contains(double x,
double y,
double width,
double height)
contains in interface Shapecontains in class Rectangle2Dx - The x minimal ordinate value.y - The y minimal ordinate value.width - The rectangle width.height - The rectangle height.
true if this rectangle entirely contains specified set of rectangular
coordinates; false otherwise.public boolean contains(Rectangle2D rect)
Rectangle2D implementation in order
to work correctly with infinites
and NaN values.
contains in interface Shapecontains in class RectangularShaperect - The specified rectangle.
true if this shape entirely contains the specified rectangle.
public boolean contains(double x,
double y)
Rectangle2D.
contains in interface Shapecontains in class Rectangle2Dx - the x coordinates to test.y - the y coordinates to test.
true if the specified coordinates are inside the boundary of this
rectangle, false otherwise.
public static boolean containsInclusive(Rectangle2D outter,
Rectangle2D inner)
inner rectangle is contained in the interior
and/or the edge of the outter rectangle. This method is similar to
contains(Rectangle2D) except for the following points:
outter.
It tests for the edges as well.Shape contract).This method is said inclusive because it tests bounds as closed interval rather then open interval (the default Java2D behavior). Usage of closed interval is required if at least one rectangle may be the bounding box of a perfectly horizontal or vertical line; such a bounding box has 0 width or height.
outter - The first rectangle to test.inner - The second rectangle to test.
true if the interior of inner is inside the interior
and/or the edge of outter.false).
public int outcode(double x,
double y)
Rectangle2D, whether or not the specified coordinates
are on the same side of the edge as the rest of this Rectangle2D.
outcode in class Rectangle2DRectangle2D.OUT_LEFT,
Rectangle2D.OUT_TOP,
Rectangle2D.OUT_RIGHT,
Rectangle2D.OUT_BOTTOMpublic Rectangle2D createIntersection(Rectangle2D rect)
Rectangle2D object representing the
intersection of this rectangle with the specified one.
createIntersection in class Rectangle2Drect - The Rectangle2D to be intersected with this rectangle.
Rectangle2D contained in both the specified
rectangle and this one.intersect(Rectangle2D)public Rectangle2D createUnion(Rectangle2D rect)
Rectangle2D object representing the
union of this rectangle with the specified one.
createUnion in class Rectangle2Drect - The Rectangle2D to be combined with this rectangle.
Rectangle2D containing both the specified
Rectangle2D and this one.
public void add(double x,
double y)
x and y, to this rectangle.
The resulting Rectangle2D is the smallest rectangle that contains both the
original rectangle and the specified point.
After adding a point, a call to contains with the added point as an argument
does not necessarily return true. The contains method does not return
true for points on the right or bottom edges of a rectangle. Therefore, if the
added point falls on the left or bottom edge of the enlarged rectangle, contains
returns false for that point.
add in class Rectangle2Dx - X ordinate value of the point to add.y - Y ordinate value of the point to add.public void add(Rectangle2D rect)
Rectangle2D object to this rectangle.
The resulting rectangle is the union of the two Rectangle2D objects.
add in class Rectangle2Drect - The Rectangle2D to add to this rectangle.public void intersect(Rectangle2D rect)
Rectangle2D object with this rectangle. The resulting
rectangle is the intersection of the two Rectangle2D objects.
Invoking this method is equivalent to invoking the following code, except that this method behaves correctly with infinite values.
Rectangle2D.intersect(this, rect, this);
rect - The Rectangle2D to intersect with this rectangle.Rectangle2D.intersect(Rectangle2D, Rectangle2D, Rectangle2D),
createIntersection(Rectangle2D)public String toString()
String representation of this Rectangle2D.
The ordinate order is (xmin, ymin,
xmax, ymax), which is consistent
with the createFromExtremums(double, double, double, double) constructor
and with the BBOX Well Known Text (WKT) syntax.
toString in class ObjectString representing this Rectangle2D.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||