public bool GenerateTiles(MTileSettings settings) { // delete previous tiles Tiles.Clear(); double refWidth = Extents.Width + settings.XPadding; double refHeight = Extents.Height + settings.YPadding; int nRows = (int)Math.Ceiling(refHeight / settings.YSize); int nColumns = (int)Math.Ceiling(refWidth / settings.XSize); var _halfTileWidth = 0.5 * settings.XSize; var _halfTileHeight = 0.5 * settings.YSize; var _centre = Extents.Centre - new MarkGeometryPoint(0.5 * (nColumns * settings.XSize), 0.5 * (nRows * settings.YSize)); for (int row = 0; row < nRows; row++) { for (int col = 0; col < nColumns; col++) { var centrePoint = new MarkGeometryPoint( (col * settings.XSize) + _halfTileWidth, (row * settings.YSize) + _halfTileHeight ); GeometricArithmeticModule.Translate(centrePoint, _centre.X + settings.XOffset, _centre.Y + settings.YOffset); Tiles.Add(new MarkGeometryRectangle(centrePoint, settings.XSize, settings.YSize)); } } return(true); }
public static List <MTileDescription> ToTiles(MTileSettings tileSettings, GeometryExtents <double> extents) { var tiles = new List <MTileDescription>(); double refWidth = extents.Width + tileSettings.XPadding; double refHeight = extents.Height + tileSettings.YPadding; int nRows = (int)Math.Ceiling(refHeight / tileSettings.YSize); int nColumns = (int)Math.Ceiling(refWidth / tileSettings.XSize); var _halfTileWidth = 0.5 * tileSettings.XSize; var _halfTileHeight = 0.5 * tileSettings.YSize; var _centre = extents.Centre - new MarkGeometryPoint(0.5 * (nColumns * tileSettings.XSize), 0.5 * (nRows * tileSettings.YSize)); int counter = 0; for (int row = 0; row < nRows; row++) { for (int col = 0; col < nColumns; col++) { var centrePoint = new MarkGeometryPoint( (col * tileSettings.XSize) + _halfTileWidth, (row * tileSettings.YSize) + _halfTileHeight ); GeometricArithmeticModule.Translate(centrePoint, _centre.X + tileSettings.XOffset, _centre.Y + tileSettings.YOffset); tiles.Add( new MTileDescription( counter++, centrePoint.X, centrePoint.Y, tileSettings.XSize, tileSettings.YSize ) ); } } return(tiles); }