]> git.mxchange.org Git - simgear.git/blobdiff - simgear/math/interpolater.hxx
Ignore generated binaries.
[simgear.git] / simgear / math / interpolater.hxx
index 501e4ac8d452f54d144c0fd5c7a6d29df5e20a3d..8be1c672aeadc0a08d2268dcbe573cc4614f2ed1 100644 (file)
@@ -6,7 +6,7 @@
 
 // Written by Curtis Olson, started April 1998.
 //
-// Copyright (C) 1998  Curtis L. Olson  - curt@me.umn.edu
+// Copyright (C) 1998  Curtis L. Olson  - http://www.flightgear.org/~curt
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Library General Public
 
 #include <simgear/compiler.h>
 
+#include <vector>
+SG_USING_STD(vector);
+
 #include STL_STRING
 SG_USING_STD(string);
 
-#define MAX_TABLE_SIZE 32
 
 /**
  * A class that provids a simple linear 2d interpolation lookup table.
@@ -48,23 +50,49 @@ SG_USING_STD(string);
  * variable can be anything.
  */
 class SGInterpTable {
+
+    struct Entry
+    {
+      Entry ()
+       : ind(0.0L), dep(0.0L) {}
+      Entry (double independent, double dependent)
+       : ind(independent), dep(dependent) {}
+      double ind;
+      double dep;
+    };
+
     int size;
-    double table[MAX_TABLE_SIZE][2];
+    vector<Entry> table;
 
 public:
 
+    /**
+     * Constructor. Creates a new, empty table.
+     */
+    SGInterpTable();
+
     /**
      * Constructor. Loads the interpolation table from the specified file.
      * @param file name of interpolation file
      */
     SGInterpTable( const string& file );
 
+
+    /**
+     * Add an entry to the table, extending the table's length.
+     *
+     * @param ind The independent variable.
+     * @param dep The dependent variable.
+     */
+    void addEntry (double ind, double dep);
+    
+
     /**
      * Given an x value, linearly interpolate the y value from the table.
      * @param x independent variable
      * @return interpolated dependent variable
      */
-    double interpolate(double x);
+    double interpolate(double x) const;
 
     /** Destructor */
     ~SGInterpTable();