1 // gyro.cxx - simple implementation of a spinning gyro model.
17 Gyro::update (double delta_time_sec)
19 // spin decays 0.5% every second
20 _spin_norm -= 0.005 * delta_time_sec;
22 // power can increase spin by 25%
23 // every second, but only up to the
24 // level of power available
26 double step = 0.25 * _power_norm * delta_time_sec;
27 if ((_spin_norm + step) <= _power_norm)
30 _spin_norm = 0; // stop right away if the gyro breaks
33 // clamp the spin to 0.0:1.0
36 else if (_spin_norm > 1.0)
41 Gyro::set_power_norm (double power_norm)
43 _power_norm = power_norm;
47 Gyro::get_spin_norm () const
53 Gyro::set_spin_norm (double spin_norm)
55 _spin_norm = spin_norm;
59 Gyro::is_serviceable () const
65 Gyro::set_serviceable (bool serviceable)
67 _serviceable = serviceable;