cdm/src/main/java/ucar/unidata/geoloc/projection/Sinusoidal.java
public List<ProjectionPoint> getMapEdgeIntercepts(ProjectionRect projBB) {
        List<ProjectionPoint> intercepts = new LinkedList<>();

        for (ProjectionPoint topIntercept : getMapEdgeInterceptsAtY(projBB.getUpperRightPoint().getY())) {
            if (pointIsBetween(topIntercept, projBB.getUpperLeftPoint(), projBB.getUpperRightPoint())) {
                intercepts.add(topIntercept);
            }
        }

        for (ProjectionPoint rightIntercept : getMapEdgeInterceptsAtX(projBB.getUpperRightPoint().getX())) {
            if (pointIsBetween(rightIntercept, projBB.getUpperRightPoint(), projBB.getLowerRightPoint())) {
                intercepts.add(rightIntercept);
            }
        }

        for (ProjectionPoint bottomIntercept : getMapEdgeInterceptsAtY(projBB.getLowerLeftPoint().getY())) {
            if (pointIsBetween(bottomIntercept, projBB.getLowerLeftPoint(), projBB.getLowerRightPoint())) {
                intercepts.add(bottomIntercept);
            }
        }

        for (ProjectionPoint leftIntercept : getMapEdgeInterceptsAtX(projBB.getLowerLeftPoint().getX())) {
            if (pointIsBetween(leftIntercept, projBB.getLowerLeftPoint(), projBB.getUpperLeftPoint())) {
                intercepts.add(leftIntercept);
            }
        }

        return intercepts;
    }
public List<ProjectionPoint> getMapEdgeIntercepts(ProjectionRect projBB) {
        List<ProjectionPoint> intercepts = new LinkedList<>();

        for (ProjectionPoint topIntercept : getMapEdgeInterceptsAtY(projBB.getUpperRightPoint().getY())) {
            if (pointIsBetween(topIntercept, projBB.getUpperLeftPoint(), projBB.getUpperRightPoint())) {
                intercepts.add(topIntercept);
            }
        }

        for (ProjectionPoint rightIntercept : getMapEdgeInterceptsAtX(projBB.getUpperRightPoint().getX())) {
            if (pointIsBetween(rightIntercept, projBB.getUpperRightPoint(), projBB.getLowerRightPoint())) {
                intercepts.add(rightIntercept);
            }
        }

        for (ProjectionPoint bottomIntercept : getMapEdgeInterceptsAtY(projBB.getLowerLeftPoint().getY())) {
            if (pointIsBetween(bottomIntercept, projBB.getLowerLeftPoint(), projBB.getLowerRightPoint())) {
                intercepts.add(bottomIntercept);
            }
        }

        for (ProjectionPoint leftIntercept : getMapEdgeInterceptsAtX(projBB.getLowerLeftPoint().getX())) {
            if (pointIsBetween(leftIntercept, projBB.getLowerLeftPoint(), projBB.getUpperLeftPoint())) {
                intercepts.add(leftIntercept);
            }
        }

        return intercepts;
    }
public List < ProjectionPoint > getMapEdgeIntercepts ( ProjectionRect projBB ) { List < ProjectionPoint > intercepts = new LinkedList <> ( ) ; for ( ProjectionPoint topIntercept : getMapEdgeInterceptsAtY ( projBB . getUpperRightPoint ( ) . getY ( ) ) ) { if ( pointIsBetween ( topIntercept , projBB . getUpperLeftPoint ( ) , projBB . getUpperRightPoint ( ) ) ) { intercepts . add ( topIntercept ) ; } } for ( ProjectionPoint rightIntercept : getMapEdgeInterceptsAtX ( projBB . getUpperRightPoint ( ) . getX ( ) ) ) { if ( pointIsBetween ( rightIntercept , projBB . getUpperRightPoint ( ) , projBB . getLowerRightPoint ( ) ) ) { intercepts . add ( rightIntercept ) ; } } for ( ProjectionPoint bottomIntercept : getMapEdgeInterceptsAtY ( projBB . getLowerLeftPoint ( ) . getY ( ) ) ) { if ( pointIsBetween ( bottomIntercept , projBB . getLowerLeftPoint ( ) , projBB . getLowerRightPoint ( ) ) ) { intercepts . add ( bottomIntercept ) ; } } for ( ProjectionPoint leftIntercept : getMapEdgeInterceptsAtX ( projBB . getLowerLeftPoint ( ) . getX ( ) ) ) { if ( pointIsBetween ( leftIntercept , projBB . getLowerLeftPoint ( ) , projBB . getUpperLeftPoint ( ) ) ) { intercepts . add ( leftIntercept ) ; } } return intercepts ; }
Returns the points at which {@code projBB} intersects the map edge.

@param projBB  defines a bounding box that may intersect the map edge, in projection coordinates.
@return        the points at which {@code projBB} intersects the map edge. May be empty.
Returns the points at which { @code projBB } intersects the map edge .