From http://funprogramming.org/30-Multiple-rotating-objects-and-reset-matrix.html