Package org.apache.lucene.spatial3d.geom
Class GeoStandardPath.CutoffDualCircleSegmentEndpoint
java.lang.Object
org.apache.lucene.spatial3d.geom.GeoStandardPath.BaseSegmentEndpoint
org.apache.lucene.spatial3d.geom.GeoStandardPath.CutoffDualCircleSegmentEndpoint
- All Implemented Interfaces:
GeoStandardPath.SegmentEndpoint
- Enclosing class:
- GeoStandardPath
private static class GeoStandardPath.CutoffDualCircleSegmentEndpoint
extends GeoStandardPath.BaseSegmentEndpoint
Endpoint that's a dual circle with cutoff(s). This SegmentEndpoint is used when we have two
adjoining segments that are not colinear, and when we are on a non-spherical world. (1) We
construct two circles. Each circle uses the two segment endpoints for one of the two segments,
plus the one segment endpoint that is on the other side of the segment's cutoff plane. (2)
isWithin() is computed using both circles, using just the portion that is within both segments'
cutoff planes. If either matches, the point is included. (3) intersects() is computed using
both circles, with similar cutoffs. (4) bounds() uses both circles too.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final SidedPlane
First circleprotected final SidedPlane
Second circleprotected final Membership[]
Both cutoff planes are included hereprotected final GeoPoint[]
Notable points for first circleprotected final GeoPoint[]
Notable points for second circleFields inherited from class org.apache.lucene.spatial3d.geom.GeoStandardPath.BaseSegmentEndpoint
NO_MEMBERSHIP, point
-
Constructor Summary
ConstructorsConstructorDescriptionCutoffDualCircleSegmentEndpoint
(GeoPoint point, SidedPlane prevCutoffPlane, SidedPlane nextCutoffPlane, GeoPoint prevURHC, GeoPoint prevLRHC, GeoPoint currentULHC, GeoPoint currentLLHC) -
Method Summary
Modifier and TypeMethodDescriptionvoid
getBounds
(PlanetModel planetModel, Bounds bounds) Get the bounds for a segment endpoint.boolean
intersects
(GeoShape geoShape) Determine if this endpoint intersects a GeoShape.boolean
intersects
(PlanetModel planetModel, Plane p, GeoPoint[] notablePoints, Membership[] bounds) Determine if this endpoint intersects a specified plane.boolean
isWithin
(double x, double y, double z) Check if point is within this endpoint.boolean
Check if point is within this endpoint.double
nearestPathDistance
(DistanceStyle distanceStyle, double x, double y, double z) Compute nearest path distance.double
pathCenterDistance
(DistanceStyle distanceStyle, double x, double y, double z) Compute path center distance.Methods inherited from class org.apache.lucene.spatial3d.geom.GeoStandardPath.BaseSegmentEndpoint
equals, hashCode, outsideDistance, pathDeltaDistance, pathDistance, toString
-
Field Details
-
circlePlane1
First circle -
circlePlane2
Second circle -
notablePoints1
Notable points for first circle -
notablePoints2
Notable points for second circle -
cutoffPlanes
Both cutoff planes are included here
-
-
Constructor Details
-
CutoffDualCircleSegmentEndpoint
public CutoffDualCircleSegmentEndpoint(GeoPoint point, SidedPlane prevCutoffPlane, SidedPlane nextCutoffPlane, GeoPoint prevURHC, GeoPoint prevLRHC, GeoPoint currentULHC, GeoPoint currentLLHC)
-
-
Method Details
-
isWithin
Description copied from interface:GeoStandardPath.SegmentEndpoint
Check if point is within this endpoint.- Specified by:
isWithin
in interfaceGeoStandardPath.SegmentEndpoint
- Overrides:
isWithin
in classGeoStandardPath.BaseSegmentEndpoint
- Parameters:
point
- is the point.- Returns:
- true of within.
-
isWithin
public boolean isWithin(double x, double y, double z) Description copied from interface:GeoStandardPath.SegmentEndpoint
Check if point is within this endpoint.- Specified by:
isWithin
in interfaceGeoStandardPath.SegmentEndpoint
- Overrides:
isWithin
in classGeoStandardPath.BaseSegmentEndpoint
- Parameters:
x
- is the point x.y
- is the point y.z
- is the point z.- Returns:
- true of within.
-
nearestPathDistance
Description copied from interface:GeoStandardPath.SegmentEndpoint
Compute nearest path distance.- Specified by:
nearestPathDistance
in interfaceGeoStandardPath.SegmentEndpoint
- Overrides:
nearestPathDistance
in classGeoStandardPath.BaseSegmentEndpoint
- Parameters:
distanceStyle
- is the distance style.x
- is the point x.y
- is the point y.z
- is the point z.- Returns:
- the distance metric (always value zero), in aggregation form, or POSITIVE_INFINITY if the point is not within the bounds of the endpoint.
-
pathCenterDistance
Description copied from interface:GeoStandardPath.SegmentEndpoint
Compute path center distance.- Specified by:
pathCenterDistance
in interfaceGeoStandardPath.SegmentEndpoint
- Overrides:
pathCenterDistance
in classGeoStandardPath.BaseSegmentEndpoint
- Parameters:
distanceStyle
- is the distance style.x
- is the point x.y
- is the point y.z
- is the point z.- Returns:
- the distance metric, or POSITIVE_INFINITY if the point is not within the bounds of the endpoint.
-
intersects
public boolean intersects(PlanetModel planetModel, Plane p, GeoPoint[] notablePoints, Membership[] bounds) Description copied from interface:GeoStandardPath.SegmentEndpoint
Determine if this endpoint intersects a specified plane.- Specified by:
intersects
in interfaceGeoStandardPath.SegmentEndpoint
- Overrides:
intersects
in classGeoStandardPath.BaseSegmentEndpoint
- Parameters:
planetModel
- is the planet model.p
- is the plane.notablePoints
- are the points associated with the plane.bounds
- are any bounds which the intersection must lie within.- Returns:
- true if there is a matching intersection.
-
intersects
Description copied from interface:GeoStandardPath.SegmentEndpoint
Determine if this endpoint intersects a GeoShape.- Specified by:
intersects
in interfaceGeoStandardPath.SegmentEndpoint
- Overrides:
intersects
in classGeoStandardPath.BaseSegmentEndpoint
- Parameters:
geoShape
- is the GeoShape.- Returns:
- true if there is shape intersect this endpoint.
-
getBounds
Description copied from interface:GeoStandardPath.SegmentEndpoint
Get the bounds for a segment endpoint.- Specified by:
getBounds
in interfaceGeoStandardPath.SegmentEndpoint
- Overrides:
getBounds
in classGeoStandardPath.BaseSegmentEndpoint
- Parameters:
planetModel
- is the planet model.bounds
- are the bounds to be modified.
-