So, I have a rigid body class, containing a list of vertices and a 4x4 transformation matrix. At the moment, I'm applying the transformation matrix to each vertex individually, and am unable to revert the translation after rendering(multiplying the vertices by the inverse causes massive model distortion), so it just keeps stacking up, and eventually the model just violently wobbles back and forth. I understand mathematically how to accomplish the transformation, I'm just not sure where to actually DO the transformation without distorting the model. I'm using Java and LWJGL, and porting the Cyclone physics engine to Java.
Seeing as you want to keep the state of the matrix before the translation, I'd suggest using a matrixstack, this openGL tutorial explains it quite well: http://www.arcsynthesis.org/gltut/Positioning/Tut06%20Fun%20with%20Matrices.html
However, for this method I assume you perform your matrix multiplication with the vertices in GLSL. If that's not the case then you'd have to keep an original of the vertex list as well, unaltered by any translation you'd want to perform. This double management of vertices may be an issue depending on your situation, if so then instead I guess you'd have to create some sort of system that creates "undo-matrices" with each translation.