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;
    }
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.