Class GeoDegeneratePath.PathSegment

  • Enclosing class:
    GeoDegeneratePath

    private static class GeoDegeneratePath.PathSegment
    extends java.lang.Object
    This is the pre-calculated data for a path segment.
    • 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
      • 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
      • connectingPlanePoints

        public final GeoPoint[] connectingPlanePoints
        Notable points for the connecting plane
    • Constructor Detail

      • PathSegment

        public PathSegment​(PlanetModel planetModel,
                           GeoPoint start,
                           GeoPoint end,
                           Plane normalizedConnectingPlane)
        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.
    • 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
      • 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.