Update to Worldwind release 20070920
[worldwind-tracker.git] / gov / nasa / worldwind / render / GeographicSurfaceTileRenderer.java
bloba85ea6e00ccee49fd1a36bb25f6e1de5def82d58
1 /*
2 Copyright (C) 2001, 2006 United States Government
3 as represented by the Administrator of the
4 National Aeronautics and Space Administration.
5 All Rights Reserved.
6 */
7 package gov.nasa.worldwind.render;
9 import gov.nasa.worldwind.globes.SectorGeometry;
10 import gov.nasa.worldwind.geom.Sector;
12 import java.util.ArrayList;
14 /**
15 * @author tag
16 * @version $Id: GeographicSurfaceTileRenderer.java 2533 2007-08-13 05:59:08Z tgaskins $
18 public class GeographicSurfaceTileRenderer extends SurfaceTileRenderer
20 private double sgWidth;
21 private double sgHeight;
22 private double sgMinWE;
23 private double sgMinSN;
25 protected void preComputeTransform(DrawContext dc, SectorGeometry sg)
27 Sector st = sg.getSector();
28 this.sgWidth = st.getDeltaLonRadians();
29 this.sgHeight = st.getDeltaLatRadians();
30 this.sgMinWE = st.getMinLongitude().radians;
31 this.sgMinSN = st.getMinLatitude().radians;
34 protected void computeTransform(DrawContext dc, SurfaceTile tile, Transform t)
36 Sector st = tile.getSector();
37 double tileWidth = st.getDeltaLonRadians();
38 double tileHeight = st.getDeltaLatRadians();
39 double minLon = st.getMinLongitude().radians;
40 double minLat = st.getMinLatitude().radians;
42 t.VScale = tileHeight > 0 ? this.sgHeight / tileHeight : 1;
43 t.HScale = tileWidth > 0 ? this.sgWidth / tileWidth : 1;
44 t.VShift = -(minLat - this.sgMinSN) / this.sgHeight;
45 t.HShift = -(minLon - this.sgMinWE) / this.sgWidth;
48 protected Iterable<SurfaceTile> getIntersectingTiles(DrawContext dc, SectorGeometry sg,
49 Iterable<? extends SurfaceTile> tiles)
51 ArrayList<SurfaceTile> intersectingTiles = null;
53 for (SurfaceTile tile : tiles)
55 if (!tile.getSector().intersects(sg.getSector()))
56 continue;
58 if (intersectingTiles == null)
59 intersectingTiles = new ArrayList<SurfaceTile>();
61 intersectingTiles.add(tile);
64 if (intersectingTiles == null)
65 return null;
67 return intersectingTiles;