+
+\f
+/**
+ * Interplation controller using user-supplied parameters.
+ */
+class FGInterpolateEnvironmentCtrl : public FGEnvironmentCtrl
+{
+public:
+ FGInterpolateEnvironmentCtrl ();
+ virtual ~FGInterpolateEnvironmentCtrl ();
+
+ virtual void init ();
+ virtual void reinit ();
+ virtual void update (double delta_time_sec);
+
+private:
+
+ struct bucket {
+ double altitude_ft;
+ FGEnvironment environment;
+ bool operator< (const bucket &b) const;
+ };
+
+ void read_table (const SGPropertyNode * node, vector<bucket *> &table);
+ void do_interpolate (vector<bucket *> &table, double altitude_ft,
+ FGEnvironment * environment);
+
+ FGEnvironment env1, env2; // temporaries
+
+ vector<bucket *> _boundary_table;
+ vector<bucket *> _aloft_table;
+};
+
+