]> git.mxchange.org Git - flightgear.git/commitdiff
Add a new <power> property to allow raising an axis to a power other
authordavid <david>
Sat, 1 Mar 2003 21:28:51 +0000 (21:28 +0000)
committerdavid <david>
Sat, 1 Mar 2003 21:28:51 +0000 (21:28 +0000)
than 1 or 2 (<squared/> still works as well, and is equivalent to
<power>2</power>).

src/Main/fg_commands.cxx

index 8d5e987b9cd069f3d864d7e342afef33ced1b1ab..7d99584813f64551223a33460ed2b253f3f0128d 100644 (file)
@@ -619,9 +619,28 @@ do_property_scale (const SGPropertyNode * arg)
   double offset = arg->getDoubleValue("offset", 0.0);
   double factor = arg->getDoubleValue("factor", 1.0);
   bool squared = arg->getBoolValue("squared", false);
-
-  if (squared)
-    setting = (setting < 0 ? -1 : 1) * setting * setting;
+  int power = arg->getIntValue("power", (squared ? 2 : 1));
+
+  int sign = (setting < 0 ? -1 : 1);
+
+  switch (power) {
+  case 1:
+      break;
+  case 2:
+      setting = setting * setting * sign;
+      break;
+  case 3:
+      setting = setting * setting * setting;
+      break;
+  case 4:
+      setting = setting * setting * setting * setting * sign;
+      break;
+  default:
+      setting =  pow(setting, power);
+      if ((power % 2) == 0)
+          setting *= sign;
+      break;
+  }
 
   return prop->setDoubleValue((setting + offset) * factor);
 }