Here's how I'd try approaching the problem: break it into steps.
1) Find the rotation angle and plane (or axis, in 3D)
You can do this by looking at a fixed-body reference frame before and after the rotation. Suppose the old frame is e, and the new frame is f. Each new basis vector is a linear combination of the old ones,
f_i = R_i^{~j} e_j
and I believe the matrix elements are given by
R_i^{~j} = f_i \cdot e^j
where e^j is the j'th reciprocal basis vector.
(Of course, you can choose an orthonormal frame so that e^j = e_j.)
Once you have your rotation matrix, it should have one real eigenvalue of 1. Solve it for the corresponding eigenvector; this is your rotation axis.
To get the angle, one way might be to find a vector orthogonal to the axis (i.e., in the plane of rotation). Then, rotate it by this matrix, and take the dot product with its unrotated self. This should give you cos theta.
2) Find your translation.
The most general 3D motion consists of a rotation about an arbitrary point, plus a translation along the rotation axis. Now that you know the rotation axis, you can find that translation directly: it's the projection of the displacement of the center of mass along the rotation axis.
So if your axis is \hat{r}, your displacement will be t\hat{r} = ((x'-x)\cdot\hat{r})\hat{r}, where x' (x) is your final (original) center of mass.
3) Find the point of rotation.
You now know the axis and angle. Find the distance (projected onto the plane of rotation!) that the center of mass has moved. The initial point A=x, the projected final point B=x'-t\hat{r}, and center of rotation C form an isosceles triangle. The angle ABC is the rotation angle, and the side AB is the projected distance your center of mass has moved. You can now solve for r, the distance of the center of mass from the center of rotation.
DISCLAIMER: I don't really know if this approach is correct, since I haven't tried it. Anything I said could be flat-out wrong. But I hope it gives you some ideas. :)