Package org.apache.lucene.spatial3d.geom
Interface GeoStandardPath.SegmentEndpoint
-
- All Known Implementing Classes:
GeoStandardPath.BaseSegmentEndpoint
,GeoStandardPath.CircleSegmentEndpoint
,GeoStandardPath.CutoffDualCircleSegmentEndpoint
,GeoStandardPath.CutoffSingleCircleSegmentEndpoint
- Enclosing class:
- GeoStandardPath
private static interface GeoStandardPath.SegmentEndpoint
Internal interface describing segment endpoint implementations. There are several different such implementations, each corresponding to a different geometric conformation. Note well: This is not necessarily a circle. There are four cases: (1) The path consists of a single endpoint. In this case, we build a simple circle with the proper cutoff offset. (2) This is the end of a path. The circle plane must be constructed to go through two supplied points and be perpendicular to a connecting plane. (2.5) Intersection, but the path on both sides is linear. We generate a circle, but we use the cutoff planes to limit its influence in the straight line case. (3) This is an intersection in a path. We are supplied FOUR planes. If there are intersections within bounds for both upper and lower, then we generate no circle at all. If there is one intersection only, then we generate a plane that includes that intersection, as well as the remaining cutoff plane/edge plane points.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
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
isWithin(Vector point)
Check if point is within this endpoint.double
nearestPathDistance(DistanceStyle distanceStyle, double x, double y, double z)
Compute nearest path distance.double
outsideDistance(DistanceStyle distanceStyle, double x, double y, double z)
Compute external distance.double
pathCenterDistance(DistanceStyle distanceStyle, double x, double y, double z)
Compute path center distance.double
pathDeltaDistance(DistanceStyle distanceStyle, double x, double y, double z)
Compute delta path distance.double
pathDistance(DistanceStyle distanceStyle, double x, double y, double z)
Compute interior path distance.
-
-
-
Method Detail
-
isWithin
boolean isWithin(Vector point)
Check if point is within this endpoint.- Parameters:
point
- is the point.- Returns:
- true of within.
-
isWithin
boolean isWithin(double x, double y, double z)
Check if point is within this endpoint.- Parameters:
x
- is the point x.y
- is the point y.z
- is the point z.- Returns:
- true of within.
-
pathDeltaDistance
double pathDeltaDistance(DistanceStyle distanceStyle, double x, double y, double z)
Compute delta path distance.- 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, in aggregation form.
-
pathDistance
double pathDistance(DistanceStyle distanceStyle, double x, double y, double z)
Compute interior path distance.- 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, in aggregation form.
-
nearestPathDistance
double nearestPathDistance(DistanceStyle distanceStyle, double x, double y, double z)
Compute nearest path distance.- 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
double pathCenterDistance(DistanceStyle distanceStyle, double x, double y, double z)
Compute path center distance.- 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.
-
outsideDistance
double outsideDistance(DistanceStyle distanceStyle, double x, double y, double z)
Compute external distance.- 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.
-
intersects
boolean intersects(PlanetModel planetModel, Plane p, GeoPoint[] notablePoints, Membership[] bounds)
Determine if this endpoint intersects a specified plane.- 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
boolean intersects(GeoShape geoShape)
Determine if this endpoint intersects a GeoShape.- Parameters:
geoShape
- is the GeoShape.- Returns:
- true if there is shape intersect this endpoint.
-
getBounds
void getBounds(PlanetModel planetModel, Bounds bounds)
Get the bounds for a segment endpoint.- Parameters:
planetModel
- is the planet model.bounds
- are the bounds to be modified.
-
-