Package org.apache.lucene.spatial3d.geom
Class GeoStandardPath.PathSegment
- java.lang.Object
-
- org.apache.lucene.spatial3d.geom.GeoStandardPath.PathSegment
-
- Enclosing class:
- GeoStandardPath
private static class GeoStandardPath.PathSegment extends java.lang.Object
This is the pre-calculated data for a path segment.
-
-
Field Summary
Fields Modifier and Type Field Description GeoPoint
end
End point of the segmentSidedPlane
endCutoffPlane
Plane going through the center and end point, marking the end edge of the segmentjava.util.Map<DistanceStyle,java.lang.Double>
fullDistanceCache
Place to keep any complete segment distances we've calculated so farGeoPoint
LLHC
Lower left hand corner of segmentSidedPlane
lowerConnectingPlane
Cutoff plane parallel to connecting plane representing the other side of the path segmentGeoPoint[]
lowerConnectingPlanePoints
Notable points for the lower connecting planeGeoPoint
LRHC
Lower right hand corner of segmentPlane
normalizedConnectingPlane
Normalized plane connecting the two points and going through world centerGeoPoint
start
Starting point of the segmentSidedPlane
startCutoffPlane
Plane going through the center and start point, marking the start edge of the segmentGeoPoint
ULHC
Upper left hand corner of segmentSidedPlane
upperConnectingPlane
Cutoff plane parallel to connecting plane representing one side of the path segmentGeoPoint[]
upperConnectingPlanePoints
Notable points for the upper connecting planeGeoPoint
URHC
Upper right hand corner of segment
-
Constructor Summary
Constructors Constructor Description PathSegment(PlanetModel planetModel, GeoPoint start, GeoPoint end, Plane normalizedConnectingPlane, double planeBoundingOffset)
Construct a path segment.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description double
fullPathDistance(DistanceStyle distanceStyle)
Compute the full distance along this path segment.void
getBounds(PlanetModel planetModel, Bounds bounds)
Get the bounds for a segment endpoint.boolean
intersects(GeoShape geoShape)
Determine if this endpoint intersects a specified 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 segment.double
nearestPathDistance(PlanetModel planetModel, DistanceStyle distanceStyle, double x, double y, double z)
Compute nearest path distance.double
outsideDistance(PlanetModel planetModel, DistanceStyle distanceStyle, double x, double y, double z)
Compute external distance.double
pathCenterDistance(PlanetModel planetModel, DistanceStyle distanceStyle, double x, double y, double z)
Compute path center distance.double
pathDeltaDistance(PlanetModel planetModel, DistanceStyle distanceStyle, double x, double y, double z)
Compute delta path distance.double
pathDistance(PlanetModel planetModel, DistanceStyle distanceStyle, double x, double y, double z)
Compute interior path distance.
-
-
-
Field Detail
-
start
public final GeoPoint start
Starting point of the segment
-
end
public final GeoPoint end
End point of the segment
-
fullDistanceCache
public final java.util.Map<DistanceStyle,java.lang.Double> fullDistanceCache
Place to keep any complete segment distances we've calculated so far
-
normalizedConnectingPlane
public final Plane normalizedConnectingPlane
Normalized plane connecting the two points and going through world center
-
upperConnectingPlane
public final SidedPlane upperConnectingPlane
Cutoff plane parallel to connecting plane representing one side of the path segment
-
lowerConnectingPlane
public final SidedPlane lowerConnectingPlane
Cutoff plane parallel to connecting plane representing the other side of the path segment
-
startCutoffPlane
public final SidedPlane startCutoffPlane
Plane going through the center and start point, marking the start edge of the segment
-
endCutoffPlane
public final SidedPlane endCutoffPlane
Plane going through the center and end point, marking the end edge of the segment
-
URHC
public final GeoPoint URHC
Upper right hand corner of segment
-
LRHC
public final GeoPoint LRHC
Lower right hand corner of segment
-
ULHC
public final GeoPoint ULHC
Upper left hand corner of segment
-
LLHC
public final GeoPoint LLHC
Lower left hand corner of segment
-
upperConnectingPlanePoints
public final GeoPoint[] upperConnectingPlanePoints
Notable points for the upper connecting plane
-
lowerConnectingPlanePoints
public final GeoPoint[] lowerConnectingPlanePoints
Notable points for the lower connecting plane
-
-
Constructor Detail
-
PathSegment
public PathSegment(PlanetModel planetModel, GeoPoint start, GeoPoint end, Plane normalizedConnectingPlane, double planeBoundingOffset)
Construct a path segment.- Parameters:
planetModel
- is the planet model.start
- is the starting point.end
- is the ending point.normalizedConnectingPlane
- is the connecting plane.planeBoundingOffset
- is the linear offset from the connecting plane to either side.
-
-
Method Detail
-
fullPathDistance
public double fullPathDistance(DistanceStyle distanceStyle)
Compute the full distance along this path segment.- Parameters:
distanceStyle
- is the distance style.- Returns:
- the distance metric, in aggregation form.
-
isWithin
public boolean isWithin(double x, double y, double z)
Check if point is within this segment.- Parameters:
x
- is the point x.y
- is the point y.z
- is the point z.- Returns:
- true of within.
-
pathCenterDistance
public double pathCenterDistance(PlanetModel planetModel, DistanceStyle distanceStyle, double x, double y, double z)
Compute path center distance.- Parameters:
planetModel
- is the planet model.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 Double.POSITIVE_INFINITY if outside this segment
-
nearestPathDistance
public double nearestPathDistance(PlanetModel planetModel, DistanceStyle distanceStyle, double x, double y, double z)
Compute nearest path distance.- Parameters:
planetModel
- is the planet model.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, or Double.POSITIVE_INFINITY if outside this segment
-
pathDeltaDistance
public double pathDeltaDistance(PlanetModel planetModel, DistanceStyle distanceStyle, double x, double y, double z)
Compute delta path distance.- Parameters:
planetModel
- is the planet model.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, or Double.POSITIVE_INFINITY if outside the segment.
-
pathDistance
public double pathDistance(PlanetModel planetModel, DistanceStyle distanceStyle, double x, double y, double z)
Compute interior path distance.- Parameters:
planetModel
- is the planet model.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.
-
outsideDistance
public double outsideDistance(PlanetModel planetModel, DistanceStyle distanceStyle, double x, double y, double z)
Compute external distance.- Parameters:
planetModel
- is the planet model.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
public 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
public boolean intersects(GeoShape geoShape)
Determine if this endpoint intersects a specified GeoShape.- Parameters:
geoShape
- is the GeoShape.- Returns:
- true if there GeoShape intersects this endpoint.
-
getBounds
public 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.
-
-