1 // gyro.cxx - simple implementation of a spinning gyro model.
16 void Gyro::reinit(void)
23 Gyro::update (double delta_time_sec)
25 // spin decays 0.5% every second
26 _spin_norm -= 0.005 * delta_time_sec;
28 // power can increase spin by 25%
29 // every second, but only up to the
30 // level of power available
32 double step = 0.25 * _power_norm * delta_time_sec;
33 if ((_spin_norm + step) <= _power_norm)
36 _spin_norm = 0; // stop right away if the gyro breaks
39 // clamp the spin to 0.0:1.0
42 else if (_spin_norm > 1.0)
47 Gyro::set_power_norm (double power_norm)
49 _power_norm = power_norm;
53 Gyro::get_spin_norm () const
59 Gyro::set_spin_norm (double spin_norm)
61 _spin_norm = spin_norm;
65 Gyro::is_serviceable () const
71 Gyro::set_serviceable (bool serviceable)
73 _serviceable = serviceable;