cdm/src/main/java/ucar/unidata/geoloc/ProjectionImpl.java
ProjectionRect latLonToProjBB2(LatLonRect latlonRect) {
    double minx, maxx, miny, maxy;

    LatLonPointImpl llpt = latlonRect.getLowerLeftPoint();
    LatLonPointImpl urpt = latlonRect.getUpperRightPoint();
    LatLonPointImpl lrpt = latlonRect.getLowerRightPoint();
    LatLonPointImpl ulpt = latlonRect.getUpperLeftPoint();

    if (isLatLon()) {
      minx = getMinOrMaxLon(llpt.getLongitude(), ulpt.getLongitude(), true);
      miny = Math.min(llpt.getLatitude(), lrpt.getLatitude());
      maxx = getMinOrMaxLon(urpt.getLongitude(), lrpt.getLongitude(), false);
      maxy = Math.min(ulpt.getLatitude(), urpt.getLatitude());

    } else {
      ProjectionPoint ll = latLonToProj(llpt, new ProjectionPointImpl());
      ProjectionPoint ur = latLonToProj(urpt, new ProjectionPointImpl());
      ProjectionPoint lr = latLonToProj(lrpt, new ProjectionPointImpl());
      ProjectionPoint ul = latLonToProj(ulpt, new ProjectionPointImpl());

      minx = Math.min(ll.getX(), ul.getX());
      miny = Math.min(ll.getY(), lr.getY());
      maxx = Math.max(ur.getX(), lr.getX());
      maxy = Math.max(ul.getY(), ur.getY());
    }

    return new ProjectionRect(minx, miny, maxx, maxy);
  }
ProjectionRect latLonToProjBB2(LatLonRect latlonRect) {
    double minx, maxx, miny, maxy;

    LatLonPointImpl llpt = latlonRect.getLowerLeftPoint();
    LatLonPointImpl urpt = latlonRect.getUpperRightPoint();
    LatLonPointImpl lrpt = latlonRect.getLowerRightPoint();
    LatLonPointImpl ulpt = latlonRect.getUpperLeftPoint();

    if (isLatLon()) {
      minx = getMinOrMaxLon(llpt.getLongitude(), ulpt.getLongitude(), true);
      miny = Math.min(llpt.getLatitude(), lrpt.getLatitude());
      maxx = getMinOrMaxLon(urpt.getLongitude(), lrpt.getLongitude(), false);
      maxy = Math.min(ulpt.getLatitude(), urpt.getLatitude());

    } else {
      ProjectionPoint ll = latLonToProj(llpt, new ProjectionPointImpl());
      ProjectionPoint ur = latLonToProj(urpt, new ProjectionPointImpl());
      ProjectionPoint lr = latLonToProj(lrpt, new ProjectionPointImpl());
      ProjectionPoint ul = latLonToProj(ulpt, new ProjectionPointImpl());

      minx = Math.min(ll.getX(), ul.getX());
      miny = Math.min(ll.getY(), lr.getY());
      maxx = Math.max(ur.getX(), lr.getX());
      maxy = Math.max(ul.getY(), ur.getY());
    }

    return new ProjectionRect(minx, miny, maxx, maxy);
  }
Alternate way to calculate latLonToProjBB, originally in GridCoordSys.
Difficult to do this in a general way.

@param latlonRect desired lat/lon rectangle
@return a ProjectionRect