protected OMGeometry createMGRSRectangle(MGRSPoint mgrsBasePoint,double voffset,double hoffset,double interval,Ellipsoid ellipsoid){
  double[] llpoints=new double[10];
  double easting=mgrsBasePoint.easting + hoffset;
  double northing=mgrsBasePoint.northing + voffset;
  int zone_number=mgrsBasePoint.zone_number;
  char zone_letter=mgrsBasePoint.zone_letter;
  LatLonPoint llp1=new LatLonPoint.Double();
  llp1=MGRSPoint.MGRStoLL(ellipsoid,northing,easting,zone_number,zone_letter,llp1);
  llpoints[0]=llp1.getY();
  llpoints[1]=llp1.getX();
  llpoints[8]=llp1.getY();
  llpoints[9]=llp1.getX();
  MGRSPoint.MGRStoLL(ellipsoid,northing,easting + interval,zone_number,zone_letter,llp1);
  llpoints[2]=llp1.getY();
  llpoints[3]=llp1.getX();
  MGRSPoint.MGRStoLL(ellipsoid,northing + interval,easting + interval,zone_number,zone_letter,llp1);
  llpoints[4]=llp1.getY();
  llpoints[5]=llp1.getX();
  MGRSPoint.MGRStoLL(ellipsoid,northing + interval,easting,zone_number,zone_letter,llp1);
  llpoints[6]=llp1.getY();
  llpoints[7]=llp1.getX();
  MGRSPoint mgrs=new MGRSPoint(northing,easting,zone_number,zone_letter);
  mgrs.resolve(mgrsBasePoint.getAccuracy());
  String mgrsString=mgrs.getMGRS();
  if (Debug.debugging("utmgriddetail"))   Debug.output(" - assigning " + mgrsString + " to poly with "+ mgrs.getAccuracy());
  PolygonGeometry poly=new PolygonGeometry.LL(llpoints,OMGraphic.DECIMAL_DEGREES,(interval <= 1000 ? OMGraphic.LINETYPE_STRAIGHT : OMGraphic.LINETYPE_GREATCIRCLE));
  poly.putAttribute(OMGraphic.APP_OBJECT,mgrsString);
  return poly;
}

protected OMGeometry createMGRSRectangle ( MGRSPoint mgrsBasePoint , double voffset , double hoffset , double interval , Ellipsoid ellipsoid ) { double [ ] llpoints = new double [ 10 ] ; double easting = mgrsBasePoint . easting + hoffset ; double northing = mgrsBasePoint . northing + voffset ; int zone_number = mgrsBasePoint . zone_number ; char zone_letter = mgrsBasePoint . zone_letter ; LatLonPoint llp1 = new LatLonPoint . Double ( ) ; llp1 = MGRSPoint . MGRStoLL ( ellipsoid , northing , easting , zone_number , zone_letter , llp1 ) ; llpoints [ 0 ] = llp1 . getY ( ) ; llpoints [ 1 ] = llp1 . getX ( ) ; llpoints [ 8 ] = llp1 . getY ( ) ; llpoints [ 9 ] = llp1 . getX ( ) ; MGRSPoint . MGRStoLL ( ellipsoid , northing , easting + interval , zone_number , zone_letter , llp1 ) ; llpoints [ 2 ] = llp1 . getY ( ) ; llpoints [ 3 ] = llp1 . getX ( ) ; MGRSPoint . MGRStoLL ( ellipsoid , northing + interval , easting + interval , zone_number , zone_letter , llp1 ) ; llpoints [ 4 ] = llp1 . getY ( ) ; llpoints [ 5 ] = llp1 . getX ( ) ; MGRSPoint . MGRStoLL ( ellipsoid , northing + interval , easting , zone_number , zone_letter , llp1 ) ; llpoints [ 6 ] = llp1 . getY ( ) ; llpoints [ 7 ] = llp1 . getX ( ) ; MGRSPoint mgrs = new MGRSPoint ( northing , easting , zone_number , zone_letter ) ; mgrs . resolve ( mgrsBasePoint . getAccuracy ( ) ) ; String mgrsString = mgrs . getMGRS ( ) ; if ( Debug . debugging ( "utmgriddetail" ) ) Debug . output ( " - assigning " + mgrsString + " to poly with " + mgrs . getAccuracy ( ) ) ; PolygonGeometry poly = new PolygonGeometry . LL ( llpoints , OMGraphic . DECIMAL_DEGREES , ( interval <= 1000 ? OMGraphic . LINETYPE_STRAIGHT : OMGraphic . LINETYPE_GREATCIRCLE ) ) ; poly . putAttribute ( OMGraphic . APP_OBJECT , mgrsString ) ; return poly ; }
create a polygon representing an equi - distant area , at a meters offset with a meters interval .
