]> git.mxchange.org Git - flightgear.git/blobdiff - Airports/genapt.cxx
Optimizations from Norman Vine.
[flightgear.git] / Airports / genapt.cxx
index 3ed91daff0f8a99f552d3b5a12700a526871a8da..22ad167367c8488c789a00b88581ce8f2fe7f5f0 100644 (file)
@@ -1,5 +1,5 @@
 //
-// getapt.cxx -- generate airport scenery from the given definition file
+// genapt.cxx -- generate airport scenery from the given definition file
 //
 // Written by Curtis Olson, started September 1998.
 //
 using namespace std;
 #endif
 
-#include <Debug/fg_debug.h>
+#ifdef __BORLANDC__
+#  define exception c_exception
+#endif
+#include <math.h>
+
+#include <Debug/logstream.hxx>
 // #include <Include/fg_types.h>
 #include <Math/fg_geodesy.hxx>
 #include <Math/mat3.h>
@@ -50,18 +55,6 @@ typedef container::iterator iterator;
 typedef container::const_iterator const_iterator;
 
 
-/*
-// Calculate distance between to Point3D's
-static double calc_dist(const Point3D& p1, const Point3D& p2) {
-    double x, y, z;
-    x = p1.x() - p2.x();
-    y = p1.y() - p2.y();
-    z = p1.z() - p2.z();
-    return sqrt(x*x + y*y + z*z);
-}
-*/
-
-
 #define FG_APT_BASE_TEX_CONSTANT 2000.0
 
 // Calculate texture coordinates for a given point.
@@ -102,22 +95,25 @@ gen_base( const Point3D& average, const container& perimeter, fgTILE *t)
 
     max_dist = 0.0;
 
-    cout << "generating airport base for size = " << perimeter.size() << "\n";
+    FG_LOG( FG_TERRAIN, FG_INFO, 
+           "generating airport base for size = " << perimeter.size() );
 
     fragment.init();
     fragment.tile_ptr = t;
 
     // find airport base material in the properties list
     if ( ! material_mgr.find( APT_BASE_MATERIAL, fragment.material_ptr )) {
-       fgPrintf( FG_TERRAIN, FG_ALERT, 
-                 "Ack! unknown material name = %s in fgAptGenerat()\n",
-                 APT_BASE_MATERIAL );
+       FG_LOG( FG_TERRAIN, FG_ALERT, 
+               "Ack! unknown material name = " << APT_BASE_MATERIAL 
+               << " in fgAptGenerat()" );
     }
 
-    printf(" tile center = %.2f %.2f %.2f\n", 
-          t->center.x(), t->center.y(), t->center.z() );
-    printf(" airport center = %.2f %.2f %.2f\n", 
-          average.x(), average.y(), average.z());
+    FG_LOG( FG_TERRAIN, FG_INFO, 
+           " tile center = " 
+           << t->center.x() << " " << t->center.y() << " " << t->center.z() );
+    FG_LOG( FG_TERRAIN, FG_INFO, 
+           " airport center = "
+           << average.x() << " " << average.y() << " " << average.z() );
     fragment.center = average;
 
     normal[0] = average.x();
@@ -153,7 +149,7 @@ gen_base( const Point3D& average, const container& perimeter, fgTILE *t)
 
     i = 1;
     tex = calc_tex_coords( t->nodes[i], t->center );
-    dist = distance3D(average, cart);
+    dist = cart.distance3Dsquared(average);
     if ( dist > max_dist ) {
        max_dist = dist;
     }
@@ -173,7 +169,7 @@ gen_base( const Point3D& average, const container& perimeter, fgTILE *t)
        fragment.add_face(center_num, i - 1, i);
 
        tex = calc_tex_coords( t->nodes[i], t->center );
-       dist = distance3D(average, cart);
+       dist = cart.distance3Dsquared(average);
        if ( dist > max_dist ) {
            max_dist = dist;
        }
@@ -195,7 +191,7 @@ gen_base( const Point3D& average, const container& perimeter, fgTILE *t)
     xglEnd();
     xglEndList();
 
-    fragment.bounding_radius = max_dist;
+    fragment.bounding_radius = sqrt(max_dist);
     fragment.display_list = display_list;
 
     t->fragment_list.push_back(fragment);
@@ -231,10 +227,10 @@ fgAptGenerate(const string& path, fgTILE *tile)
     apt_id = "";
 
     // read in each line of the file
-    in.eat_comments();
+    in >> skipcomment;
     while ( ! in.eof() )
     {
-       in.stream() >> token;
+       in >> token;
 
        if ( token == "a" ) {
            // airport info record (start of airport)
@@ -245,8 +241,8 @@ fgAptGenerate(const string& path, fgTILE *tile)
                gen_base(average, perimeter, tile);
            }
 
-           cout << "Reading airport record\n";
-           in.stream() >> apt_id;
+           FG_LOG( FG_TERRAIN, FG_INFO, "Reading airport record" );
+           in >> apt_id;
            apt_name = "";
            i = 1;
            avex = avey = avez = 0.0;
@@ -255,14 +251,15 @@ fgAptGenerate(const string& path, fgTILE *tile)
            while ( in.get(c) && c != '\n' ) {
                apt_name += c;
            }
-           cout << "\tID = " + apt_id + "  Name = " + apt_name + "\n";
+           FG_LOG( FG_TERRAIN, FG_INFO, 
+                   "\tID = " << apt_id << "  Name = " << apt_name );
        } else if ( token == "p" ) {
            // airport area bounding polygon coordinate.  These
            // specify a convex hull that should already have been cut
            // out of the base terrain.  The points are given in
            // counter clockwise order and are specified in lon/lat
            // degrees.
-           in.stream() >> p;
+           in >> p;
            avex += tile->nodes[i][0];
            avey += tile->nodes[i][1];
            avez += tile->nodes[i][2];
@@ -274,8 +271,7 @@ fgAptGenerate(const string& path, fgTILE *tile)
            while ( in.get(c) && c != '\n' );
        }
 
-       // airports.insert(a);
-       in.eat_comments();
+       in >> skipcomment;
     }
 
     if ( apt_id != "" ) {
@@ -294,6 +290,28 @@ fgAptGenerate(const string& path, fgTILE *tile)
 
 
 // $Log$
+// Revision 1.12  1999/02/01 21:08:33  curt
+// Optimizations from Norman Vine.
+//
+// Revision 1.11  1998/11/23 21:48:09  curt
+// Borland portability tweaks.
+//
+// Revision 1.10  1998/11/07 19:07:06  curt
+// Enable release builds using the --without-logging option to the configure
+// script.  Also a couple log message cleanups, plus some C to C++ comment
+// conversion.
+//
+// Revision 1.9  1998/11/06 21:17:32  curt
+// Converted to new logstream debugging facility.  This allows release
+// builds with no messages at all (and no performance impact) by using
+// the -DFG_NDEBUG flag.
+//
+// Revision 1.8  1998/11/06 14:46:59  curt
+// Changes to track Bernie's updates to fgstream.
+//
+// Revision 1.7  1998/10/20 18:26:06  curt
+// Updates to point3d.hxx
+//
 // Revision 1.6  1998/10/18 01:17:16  curt
 // Point3D tweaks.
 //
@@ -315,5 +333,3 @@ fgAptGenerate(const string& path, fgTILE *tile)
 // Revision 1.1  1998/09/14 02:14:01  curt
 // Initial revision of genapt.[ch]xx for generating airport scenery.
 //
-//
-