]> git.mxchange.org Git - simgear.git/commitdiff
Added methods to return tile dimension in meters.
authorcurt <curt>
Mon, 4 Dec 2000 04:11:03 +0000 (04:11 +0000)
committercurt <curt>
Mon, 4 Dec 2000 04:11:03 +0000 (04:11 +0000)
simgear/bucket/newbucket.cxx
simgear/bucket/newbucket.hxx

index f707d25217d58609896dbc3b6879cc915115989f..74c3ce299c970bf14dc99e69d6bb3d06894b6afd 100644 (file)
@@ -85,6 +85,33 @@ string FGBucket::gen_base_path() const {
 }
 
 
+// return width of the tile in meters
+double FGBucket::get_width_m() const {
+    double clat = (int)get_center_lat();
+    if ( clat > 0 ) {
+       clat = (int)clat + 0.5;
+    } else {
+       clat = (int)clat - 0.5;
+    }
+    double clat_rad = clat * DEG_TO_RAD;
+    double cos_lat = cos( clat_rad );
+    double local_radius = cos_lat * EQUATORIAL_RADIUS_M;
+    double local_perimeter = 2.0 * local_radius * FG_PI;
+    double degree_width = local_perimeter / 360.0;
+
+    return bucket_span( get_center_lat() ) * degree_width;
+}
+
+
+// return height of the tile in meters
+double FGBucket::get_height_m() const {
+    double perimeter = 2.0 * EQUATORIAL_RADIUS_M * FG_PI;
+    double degree_height = perimeter / 360.0;
+
+    return FG_BUCKET_SPAN * degree_height;
+}
+
+
 // find the bucket which is offset by the specified tile units in the
 // X & Y direction.  We need the current lon and lat to resolve
 // ambiguities when going from a wider tile to a narrower one above or
index 7fabfb6e81b66e2986e3a6668f39bc94427521ed..775812d3a1fcf3d9483977cdd8989f80d6bb617f 100644 (file)
@@ -107,14 +107,18 @@ public:
     // return the center lon of a tile
     double get_center_lon() const;
 
-    // return width of the tile
+    // return width of the tile in degrees
     double get_width() const;
+    // return width of the tile in meters
+    double get_width_m() const; 
+    // return height of the tile in degrees
+    double get_height() const;
+    // return height of the tile in meters
+    double get_height_m() const;
 
     // return the center lat of a tile
     double get_center_lat() const;
 
-    // return height of the tile
-    double get_height() const;
 
     // Informational methods
     inline int get_lon() const { return lon; }
@@ -300,13 +304,13 @@ inline double FGBucket::get_center_lat() const {
 }
 
 
-// return width of the tile
+// return width of the tile in degrees
 inline double FGBucket::get_width() const {
     return bucket_span( get_center_lat() );
 }
 
 
-// return height of the tile
+// return height of the tile in degrees
 inline double FGBucket::get_height() const {
     return FG_BUCKET_SPAN;
 }