# On the Gyro Speed

The Learn and Easy levels of Aligyro have a minimum allowable RPM. The gyro is never allowed to go below the RPM in order to make it easier for the user to get a feel for the required wrist motion and so make it easier to accelerate the gyro. This base speed is around 1000 RPM. Medium and Wizard levels allow the gyro speed to go down to zero. The maximum achievable speed of the gyro is around 4000 RPM. This gives a total RPM range of 0 to 4000.

If the simulation spun the gyro at the real 1:1 speed of the model, it would just always be a blur and all of the work put into making the gyro look cool would be lost on the user. For example a gyro spinning at the base 1000 RPM is making almost 17 revolutions per second. At 17 revolutions per second, it would just be a blur. As the speed increased to 4000 RPM or 67 revolutions per second, it would just become an even faster blur. As a matter of fact, on the iPad at 60 revolutions per second it would appear to stand still and not be moving at all. This is because the iPad version redraws the gyro 60 times per second. If it makes a full rotation every drawing frame, then it appears to never move. It was decided having the gyro just always be a blur eliminated a source of positive feedback for the user. There is less of a sense of accomplishment it the gyro never really seems to get faster and even gets slower then stops.

The first change was to reduce the speed of the gyro drawn on the screen compared to the physics model. The speed was reduced by a factor of 30. This means if the model is spinning at 3000 RPM, we would show the gyro on the screen spinning 100 RPM or 1.7 rotations per second. However, this meant that the base speed of 1000 RPM resulted in a gyro which appeared to be spinning too slowly. The gyro would appear to be spinning only one revolution every two seconds. If the speed reduction factor was decrease to make the gyro appear faster at the base speed, it became too fast at the top speed. A different approach was needed to get the desired effect.

The initial approach of just reducing the apparent speed of the gyro by just dividing it by a constant is called a linear relation. The speed varies along a straight line. If the speed of the model doubles, the speed of the displayed gyro also doubles. Our human senses such as hearing and vision are not linear. If you reduce the sound output of your stereo by half, it does not sound half as loud (wikipedia reference). Stereo manufacturers use a non-linear logarithmic volume knob so that the knob behaves as we would expect it to behave which is to say moving the knob half way to zero should cut the volume by half.

The display speed of the gyro is also a logarithmic mapping from the model gyro speed. The displayed speed of the gyro is log10(modelSpeed). The log10 of a number is the exponent on 10 required to get that number. For example 100 = 10^{2} therefore log10(100) = 2. Log10(10RPM)=1, Log10(100RPM)=2, Log10(1000RPM)=3, Log10(4000RPM) = 3.6. If we just used a log10 mapping, the apparent speed of the gyro would range from 3 RPM to 3.6 RPM. Sort of the opposite problem now. Not enough speed differential or just plain speed. It was determined multiplying the result of the log mapping by 8 gives a good apparent speed range, 0 RPM at 0 RPM, 24 RPM at 1000 RPM and almost 30 RPM apparent when the model speed is over 4000 RPM.

An alternative and more realistic approach would have been to just use a permanently blurred image for the gyro and not even bother spinning it on screen. It would just be a blurred gyro precessing around. It would have been more realistic but I don't think it would have been as satisfying to use. Hopefully most Aligyro users agree.