The answer is to translate, rotate, and then use the inverse translation. The
translation moves the model to the origin, where it's now centered. The r matrix
rotates the model on its base. Finally, the inverse of the translation moves it
back to where it was. The key idea here is that the object is first being moved
to the origin. Once that's done, we can rotate around its axis with the r
matrix. At this point, forget about that there's even a rotation matrix. The
model's locations are now rotated. Once that's done, we can move it back to the
same position as before, with the inverse of the translation.