cdm/src/main/java/ucar/unidata/geoloc/projection/TransverseMercator.java
public ProjectionPoint latLonToProj(LatLonPoint latLon,
                                      ProjectionPointImpl result) {
    double toX, toY;
    double fromLat = latLon.getLatitude();
    double fromLon = latLon.getLongitude();

    double lon = Math.toRadians(fromLon);
    double lat = Math.toRadians(fromLat);
    double dlon = lon - lon0;
    double b = Math.cos(lat) * Math.sin(dlon);

    if ((Math.abs(Math.abs(b) - 1.0)) < TOLERANCE) { // infinite projection
      toX = Double.POSITIVE_INFINITY;
      toY = Double.POSITIVE_INFINITY;
    } else {
      toX = scale * SpecialMathFunction.atanh(b);
      toY = scale * (Math.atan2(Math.tan(lat), Math.cos(dlon)) - lat0);
    }

    result.setLocation(toX + falseEasting, toY + falseNorthing);
    return result;
  }
public ProjectionPoint latLonToProj(LatLonPoint latLon,
                                      ProjectionPointImpl result) {
    double toX, toY;
    double fromLat = latLon.getLatitude();
    double fromLon = latLon.getLongitude();

    double lon = Math.toRadians(fromLon);
    double lat = Math.toRadians(fromLat);
    double dlon = lon - lon0;
    double b = Math.cos(lat) * Math.sin(dlon);

    if ((Math.abs(Math.abs(b) - 1.0)) < TOLERANCE) { // infinite projection
      toX = Double.POSITIVE_INFINITY;
      toY = Double.POSITIVE_INFINITY;
    } else {
      toX = scale * SpecialMathFunction.atanh(b);
      toY = scale * (Math.atan2(Math.tan(lat), Math.cos(dlon)) - lat0);
    }

    result.setLocation(toX + falseEasting, toY + falseNorthing);
    return result;
  }
public ProjectionPoint latLonToProj ( LatLonPoint latLon , ProjectionPointImpl result ) { double toX , toY ; double fromLat = latLon . getLatitude ( ) ; double fromLon = latLon . getLongitude ( ) ; double lon = Math . toRadians ( fromLon ) ; double lat = Math . toRadians ( fromLat ) ; double dlon = lon - lon0 ; double b = Math . cos ( lat ) * Math . sin ( dlon ) ; if ( ( Math . abs ( Math . abs ( b ) - 1.0 ) ) < TOLERANCE ) { // infinite projection
 toX = Double . POSITIVE_INFINITY ; toY = Double . POSITIVE_INFINITY ; } else { toX = scale * SpecialMathFunction . atanh ( b ) ; toY = scale * ( Math . atan2 ( Math . tan ( lat ) , Math . cos ( dlon ) ) - lat0 ) ; } result . setLocation ( toX + falseEasting , toY + falseNorthing ) ; return result ; }
Convert a LatLonPoint to projection coordinates

@param latLon convert from these lat, lon coordinates
@param result the object to write to
@return the given result
Convert a LatLonPoint to projection coordinates