My main point—and I did have one—was to always try to rely on fast, simple integer math. It's essentially free and it can reduce the amount of processing power you need as well as power consumption of the ultimate solution.

In this case I suppose you could think of it as a poor man's quaternion, and I guess it is, but really it's a fast, running approximation of tilt.

Assuming Z is up, we don't ultimately care about its value per se, but it does affect how we accumulate the subsequent X and Y rotations to figure out tilt, which is ultimately combination of those.

Use an integer look up table for the trig (table size dependent on accuracy desired and the ultimate size of integers), and after every step calculate the new X and Y rotations relative to launch. But keep it all in integers.

Double bonus points if you can avoid using POW and SQRT math, though these functions aren't too bad compared to the trig ones. (SQRT is a surprisingly fast thing on most microcontrollers/compilers, for instance.)