Class R1Interval
- java.lang.Object
-
- com.google.common.geometry.R1Interval
-
- All Implemented Interfaces:
java.io.Serializable
@GwtCompatible(serializable=true) public final class R1Interval extends java.lang.Object implements java.io.Serializable
An R1Interval represents a closed, bounded interval on the real line. It is capable of representing the empty interval (containing no points) and zero-length intervals (containing a single point).- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
R1Interval.Endpoint
Designates which end of the interval to work with.
-
Constructor Summary
Constructors Constructor Description R1Interval()
Default constructor, contains the empty interval.R1Interval(double lo, double hi)
Interval constructor.R1Interval(R1Interval interval)
Copy constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description R1Interval
addPoint(double p)
Returns the smallest interval that contains this interval and the pointp
.boolean
approxEquals(R1Interval y)
AsapproxEquals(R1Interval, double)
, with a default value for maxError just larger than typical rounding errors in computing intervals.boolean
approxEquals(R1Interval y, double maxError)
Returns true if this interval can be transformed intoy
by moving each endpoint by at mostmaxError
.double
clampPoint(double p)
Returns the closest point in the interval to the pointp
.boolean
contains(double p)
boolean
contains(R1Interval y)
Returns true if this interval contains the intervaly
.static R1Interval
empty()
Returns an empty interval.boolean
equals(java.lang.Object that)
R1Interval
expanded(double radius)
Return an interval that contains all points with a distance "radius" of a point in this interval.(package private) void
expandedInternal(double radius)
Expands this interval to contain all points within a distance "radius" of a point in this interval.static R1Interval
fromPoint(double p)
Convenience method to construct an interval containing a single point.static R1Interval
fromPointPair(double p1, double p2)
Convenience method to construct the minimal interval containing the two given points.double
getCenter()
Returns the center of the interval.double
getDirectedHausdorffDistance(R1Interval y)
Return the Hausdorff distance to the given intervaly
.double
getLength()
Returns the length of the interval.(package private) double
getValue(R1Interval.Endpoint endpoint)
Returns the value at the given Endpoint, which must not be null.int
hashCode()
double
hi()
(package private) void
initFromPointPair(double p1, double p2)
boolean
interiorContains(double p)
boolean
interiorContains(R1Interval y)
Returns true if the interior of this interval contains the entire intervaly
(including its boundary).boolean
interiorIntersects(R1Interval y)
Returns true if the interior of this interval intersects any point ofy
(including its boundary).R1Interval
intersection(R1Interval y)
Returns the intersection of this interval withy
.(package private) void
intersectionInternal(R1Interval y)
Sets this interval to the intersection of the current interval andy
.boolean
intersects(R1Interval y)
Returns true if this interval intersectsy
, i.e.boolean
isEmpty()
Returns true if the interval is empty, i.e.double
lo()
(package private) void
set(double lo, double hi)
Sets the minimum and maximum value of this interval.(package private) void
setEmpty()
Sets the current interval to the empty interval.(package private) void
setHi(double hi)
Sets the maximum value of this interval.(package private) void
setLo(double lo)
Sets the minimum value of this interval.(package private) void
setValue(R1Interval.Endpoint endpoint, double value)
Sets the value of the given Endpoint, which must not be null.java.lang.String
toString()
R1Interval
union(R1Interval y)
Returns the smallest interval that contains this interval andy
.(package private) void
unionInternal(double p)
Expands this interval so that it contains the pointp
.(package private) void
unionInternal(R1Interval y)
Sets this interval to the union of this interval andy
.
-
-
-
Constructor Detail
-
R1Interval
R1Interval()
Default constructor, contains the empty interval.Package private since only the S2 library needs to mutate R1Intervals. External code that needs an empty interval should call
empty()
.
-
R1Interval
public R1Interval(double lo, double hi)
Interval constructor. If lo > hi, the interval is empty.
-
R1Interval
public R1Interval(R1Interval interval)
Copy constructor.
-
-
Method Detail
-
empty
public static R1Interval empty()
Returns an empty interval. (Any interval where lo > hi is considered empty.)
-
fromPoint
public static R1Interval fromPoint(double p)
Convenience method to construct an interval containing a single point.
-
fromPointPair
public static R1Interval fromPointPair(double p1, double p2)
Convenience method to construct the minimal interval containing the two given points. This is equivalent to starting with an empty interval and calling AddPoint() twice, but it is more efficient.
-
initFromPointPair
void initFromPointPair(double p1, double p2)
-
lo
public double lo()
-
hi
public double hi()
-
getValue
double getValue(R1Interval.Endpoint endpoint)
Returns the value at the given Endpoint, which must not be null.
-
setValue
void setValue(R1Interval.Endpoint endpoint, double value)
Sets the value of the given Endpoint, which must not be null.
-
isEmpty
public boolean isEmpty()
Returns true if the interval is empty, i.e. it contains no points.
-
getCenter
public double getCenter()
Returns the center of the interval. For empty intervals, the result is arbitrary.
-
getLength
public double getLength()
Returns the length of the interval. The length of an empty interval is negative.
-
contains
public boolean contains(double p)
-
interiorContains
public boolean interiorContains(double p)
-
contains
public boolean contains(R1Interval y)
Returns true if this interval contains the intervaly
.
-
interiorContains
public boolean interiorContains(R1Interval y)
Returns true if the interior of this interval contains the entire intervaly
(including its boundary).
-
intersects
public boolean intersects(R1Interval y)
Returns true if this interval intersectsy
, i.e. if they have any points in common.
-
interiorIntersects
public boolean interiorIntersects(R1Interval y)
Returns true if the interior of this interval intersects any point ofy
(including its boundary).
-
getDirectedHausdorffDistance
public double getDirectedHausdorffDistance(R1Interval y)
Return the Hausdorff distance to the given intervaly
. For two R1Intervals x and y, this distance is defined as h(x, y) = max_{p in x} min_{q in y} d(p, q).
-
set
void set(double lo, double hi)
Sets the minimum and maximum value of this interval. Iflo
is greater thanhi
this interval will become empty.Package private since only the S2 libraries have a current need to mutate R1Intervals.
-
setLo
void setLo(double lo)
Sets the minimum value of this interval. Iflo
is greater thanhi()
this interval will become empty.Package private since only the S2 libraries have a current need to mutate R1Intervals.
-
setHi
void setHi(double hi)
Sets the maximum value of this interval. Ifhi
is less thanlo()
this interval will become empty.Package private since only the S2 libraries have a current need to mutate R1Intervals.
-
setEmpty
void setEmpty()
Sets the current interval to the empty interval.Package private since only the S2 libraries have a current need to mutate R1Intervals.
-
unionInternal
void unionInternal(double p)
Expands this interval so that it contains the pointp
.Package private since only the S2 library needs to mutate R1Intervals.
-
clampPoint
public double clampPoint(double p)
Returns the closest point in the interval to the pointp
. The interval must be non-empty.
-
expanded
@CheckReturnValue public R1Interval expanded(double radius)
Return an interval that contains all points with a distance "radius" of a point in this interval. Note that the expansion of an empty interval is always empty.
-
expandedInternal
void expandedInternal(double radius)
Expands this interval to contain all points within a distance "radius" of a point in this interval.Package private since only S2 classes are intended to mutate R1Intervals for now.
-
union
@CheckReturnValue public R1Interval union(R1Interval y)
Returns the smallest interval that contains this interval andy
.
-
unionInternal
void unionInternal(R1Interval y)
Sets this interval to the union of this interval andy
.Package private since only S2 classes are intended to mutate R11Intervals for now.
-
intersection
@CheckReturnValue public R1Interval intersection(R1Interval y)
Returns the intersection of this interval withy
. Empty intervals do not need to be special-cased.
-
intersectionInternal
void intersectionInternal(R1Interval y)
Sets this interval to the intersection of the current interval andy
.Package private since only S2 classes are intended to mutate R1 intervals for now.
-
addPoint
@CheckReturnValue public R1Interval addPoint(double p)
Returns the smallest interval that contains this interval and the pointp
.
-
equals
public boolean equals(java.lang.Object that)
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
approxEquals
public boolean approxEquals(R1Interval y)
AsapproxEquals(R1Interval, double)
, with a default value for maxError just larger than typical rounding errors in computing intervals.
-
approxEquals
public boolean approxEquals(R1Interval y, double maxError)
Returns true if this interval can be transformed intoy
by moving each endpoint by at mostmaxError
. The empty interval is considered to be positioned arbitrarily on the real line, thus any interval for whichlength <= 2*maxError
is true matches the empty interval.
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-