Package org.apache.lucene.spatial3d.geom
Class XYZBounds
- java.lang.Object
-
- org.apache.lucene.spatial3d.geom.XYZBounds
-
-
Field Summary
Fields Modifier and Type Field Description private static double
FUDGE_FACTOR
A 'fudge factor', which is added to maximums and subtracted from minimums, in order to compensate for potential error deltas.private java.lang.Double
maxX
Maximum xprivate java.lang.Double
maxY
Maximum yprivate java.lang.Double
maxZ
Maximum zprivate java.lang.Double
minX
Minimum xprivate java.lang.Double
minY
Minimum yprivate java.lang.Double
minZ
Minimum z
-
Constructor Summary
Constructors Constructor Description XYZBounds()
Construct an empty bounds object
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Bounds
addHorizontalPlane(PlanetModel planetModel, double latitude, Plane horizontalPlane, Membership... bounds)
Add a horizontal plane to the bounds description.Bounds
addIntersection(PlanetModel planetModel, Plane plane1, Plane plane2, Membership... bounds)
Add the intersection between two planes to the bounds description.Bounds
addPlane(PlanetModel planetModel, Plane plane, Membership... bounds)
Add a general plane to the bounds description.Bounds
addPoint(GeoPoint point)
Add a single point.Bounds
addVerticalPlane(PlanetModel planetModel, double longitude, Plane verticalPlane, Membership... bounds)
Add a vertical plane to the bounds description.Bounds
addXValue(double x)
Add a specific X value.Bounds
addXValue(GeoPoint point)
Add an X value.Bounds
addYValue(double y)
Add a specific Y value.Bounds
addYValue(GeoPoint point)
Add a Y value.Bounds
addZValue(double z)
Add a specific Z value.Bounds
addZValue(GeoPoint point)
Add a Z value.java.lang.Double
getMaximumX()
Return the maximum X value.java.lang.Double
getMaximumY()
Return the maximum Y value.java.lang.Double
getMaximumZ()
Return the maximum Z value.java.lang.Double
getMinimumX()
Return the minimum X value.java.lang.Double
getMinimumY()
Return the minimum Y value.java.lang.Double
getMinimumZ()
Return the minimum Z value.boolean
isLargestMaxX(PlanetModel planetModel)
Return true if maxX is as large as the planet model allows.boolean
isLargestMaxY(PlanetModel planetModel)
Return true if maxY is as large as the planet model allows.boolean
isLargestMaxZ(PlanetModel planetModel)
Return true if maxZ is as large as the planet model allows.boolean
isSmallestMinX(PlanetModel planetModel)
Return true if minX is as small as the planet model allows.boolean
isSmallestMinY(PlanetModel planetModel)
Return true if minY is as small as the planet model allows.boolean
isSmallestMinZ(PlanetModel planetModel)
Return true if minZ is as small as the planet model allows.Bounds
isWide()
Signal that the shape exceeds Math.PI in longitude.Bounds
noBottomLatitudeBound()
Signal that there is no bottom latitude bound.Bounds
noBound(PlanetModel planetModel)
Signal that there is no bound whatsoever.Bounds
noLongitudeBound()
Signal that there is no longitude bound.Bounds
noTopLatitudeBound()
Signal that there is no top latitude bound.java.lang.String
toString()
-
-
-
Field Detail
-
FUDGE_FACTOR
private static final double FUDGE_FACTOR
A 'fudge factor', which is added to maximums and subtracted from minimums, in order to compensate for potential error deltas. This would not be necessary except that our 'bounds' is defined as always equaling or exceeding the boundary of the shape, and we cannot guarantee that without making MINIMUM_RESOLUTION unacceptably large. Also, see LUCENE-7290 for a description of how geometry can magnify the bounds delta.- See Also:
- Constant Field Values
-
minX
private java.lang.Double minX
Minimum x
-
maxX
private java.lang.Double maxX
Maximum x
-
minY
private java.lang.Double minY
Minimum y
-
maxY
private java.lang.Double maxY
Maximum y
-
minZ
private java.lang.Double minZ
Minimum z
-
maxZ
private java.lang.Double maxZ
Maximum z
-
-
Method Detail
-
getMinimumX
public java.lang.Double getMinimumX()
Return the minimum X value.- Returns:
- minimum X value.
-
getMaximumX
public java.lang.Double getMaximumX()
Return the maximum X value.- Returns:
- maximum X value.
-
getMinimumY
public java.lang.Double getMinimumY()
Return the minimum Y value.- Returns:
- minimum Y value.
-
getMaximumY
public java.lang.Double getMaximumY()
Return the maximum Y value.- Returns:
- maximum Y value.
-
getMinimumZ
public java.lang.Double getMinimumZ()
Return the minimum Z value.- Returns:
- minimum Z value.
-
getMaximumZ
public java.lang.Double getMaximumZ()
Return the maximum Z value.- Returns:
- maximum Z value.
-
isSmallestMinX
public boolean isSmallestMinX(PlanetModel planetModel)
Return true if minX is as small as the planet model allows.- Returns:
- true if minX has reached its bound.
-
isLargestMaxX
public boolean isLargestMaxX(PlanetModel planetModel)
Return true if maxX is as large as the planet model allows.- Returns:
- true if maxX has reached its bound.
-
isSmallestMinY
public boolean isSmallestMinY(PlanetModel planetModel)
Return true if minY is as small as the planet model allows.- Returns:
- true if minY has reached its bound.
-
isLargestMaxY
public boolean isLargestMaxY(PlanetModel planetModel)
Return true if maxY is as large as the planet model allows.- Returns:
- true if maxY has reached its bound.
-
isSmallestMinZ
public boolean isSmallestMinZ(PlanetModel planetModel)
Return true if minZ is as small as the planet model allows.- Returns:
- true if minZ has reached its bound.
-
isLargestMaxZ
public boolean isLargestMaxZ(PlanetModel planetModel)
Return true if maxZ is as large as the planet model allows.- Returns:
- true if maxZ has reached its bound.
-
addPlane
public Bounds addPlane(PlanetModel planetModel, Plane plane, Membership... bounds)
Description copied from interface:Bounds
Add a general plane to the bounds description.
-
addHorizontalPlane
public Bounds addHorizontalPlane(PlanetModel planetModel, double latitude, Plane horizontalPlane, Membership... bounds)
Add a horizontal plane to the bounds description. This method should EITHER use the supplied latitude, OR use the supplied plane, depending on what is most efficient.- Specified by:
addHorizontalPlane
in interfaceBounds
- Parameters:
planetModel
- is the planet model.latitude
- is the latitude.horizontalPlane
- is the plane.bounds
- are the constraints on the plane.- Returns:
- updated Bounds object.
-
addVerticalPlane
public Bounds addVerticalPlane(PlanetModel planetModel, double longitude, Plane verticalPlane, Membership... bounds)
Add a vertical plane to the bounds description. This method should EITHER use the supplied longitude, OR use the supplied plane, depending on what is most efficient.- Specified by:
addVerticalPlane
in interfaceBounds
- Parameters:
planetModel
- is the planet model.longitude
- is the longitude.verticalPlane
- is the plane.bounds
- are the constraints on the plane.- Returns:
- updated Bounds object.
-
addXValue
public Bounds addXValue(GeoPoint point)
Description copied from interface:Bounds
Add an X value.
-
addXValue
public Bounds addXValue(double x)
Add a specific X value.- Parameters:
x
- is the value to add.- Returns:
- the bounds object.
-
addYValue
public Bounds addYValue(GeoPoint point)
Description copied from interface:Bounds
Add a Y value.
-
addYValue
public Bounds addYValue(double y)
Add a specific Y value.- Parameters:
y
- is the value to add.- Returns:
- the bounds object.
-
addZValue
public Bounds addZValue(GeoPoint point)
Description copied from interface:Bounds
Add a Z value.
-
addZValue
public Bounds addZValue(double z)
Add a specific Z value.- Parameters:
z
- is the value to add.- Returns:
- the bounds object.
-
addIntersection
public Bounds addIntersection(PlanetModel planetModel, Plane plane1, Plane plane2, Membership... bounds)
Description copied from interface:Bounds
Add the intersection between two planes to the bounds description. Where the shape has intersecting planes, it is better to use this method than just adding the point, since this method takes each plane's error envelope into account.- Specified by:
addIntersection
in interfaceBounds
- Parameters:
planetModel
- is the planet model.plane1
- is the first plane.plane2
- is the second plane.bounds
- are the membership bounds for the intersection.
-
addPoint
public Bounds addPoint(GeoPoint point)
Description copied from interface:Bounds
Add a single point.
-
isWide
public Bounds isWide()
Description copied from interface:Bounds
Signal that the shape exceeds Math.PI in longitude.
-
noLongitudeBound
public Bounds noLongitudeBound()
Description copied from interface:Bounds
Signal that there is no longitude bound.- Specified by:
noLongitudeBound
in interfaceBounds
- Returns:
- the updated Bounds object.
-
noTopLatitudeBound
public Bounds noTopLatitudeBound()
Description copied from interface:Bounds
Signal that there is no top latitude bound.- Specified by:
noTopLatitudeBound
in interfaceBounds
- Returns:
- the updated Bounds object.
-
noBottomLatitudeBound
public Bounds noBottomLatitudeBound()
Description copied from interface:Bounds
Signal that there is no bottom latitude bound.- Specified by:
noBottomLatitudeBound
in interfaceBounds
- Returns:
- the updated Bounds object.
-
noBound
public Bounds noBound(PlanetModel planetModel)
Description copied from interface:Bounds
Signal that there is no bound whatsoever. The bound is limited only by the constraints of the planet.
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-