]> git.mxchange.org Git - flightgear.git/blobdiff - src/Autopilot/inputvalue.cxx
Canvas: Add new element type map for geo mapping.
[flightgear.git] / src / Autopilot / inputvalue.cxx
index cbda6651f77e12a5e3c447e9ee1b3674cf9a887b..331aede8d2c85041ccc6b36b2ff6e77bef64bdaf 100644 (file)
 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 //
 
+#include <cstdlib>
+
 #include "inputvalue.hxx"
 #include <Main/fg_props.hxx>
+
 using namespace FGXMLAutopilot;
 
 PeriodicalValue::PeriodicalValue( SGPropertyNode_ptr root )
@@ -34,11 +37,21 @@ PeriodicalValue::PeriodicalValue( SGPropertyNode_ptr root )
   }
 }
 
-double PeriodicalValue::normalize( double value )
+double PeriodicalValue::normalize( double value ) const
 {
   return SGMiscd::normalizePeriodic( minPeriod->get_value(), maxPeriod->get_value(), value );
 }
 
+double PeriodicalValue::normalizeSymmetric( double value ) const
+{
+  double minValue = minPeriod->get_value();
+  double maxValue = maxPeriod->get_value();
+  
+  value = SGMiscd::normalizePeriodic( minValue, maxValue, value );
+  double width_2 = (maxValue - minValue)/2;
+  return value > width_2 ? width_2 - value : value;
+}
+
 InputValue::InputValue( SGPropertyNode_ptr node, double value, double offset, double scale) :
   _value(0.0),
   _abs(false)