attention, the computer cannot correctly represent most real numbers!
in binary format, 0.01 is a periodic number, so it will be truncated / rounded.
Substituting / adding floating-point numbers will add a rounding error a few hundred times and thus give you terribly wrong results.
(for example, after 200 tweaks, the value of your .zoom camera will be ~ 1.0000019 - NOT 1.0!)
why does your loop repeat 201 times, giving you a scaling value of 0.9900019 and a rotation of 361.7996 ~ 361.8 (when using 1.8, as in alex's answer).
you can use libGDX interpolation functions:
time += Gdx.graphics.getDeltaTime();
this code will create an animation with a duration of one second from 3 to 1 and a rotation from 0 to 360 (just one whole rotation)
source share