title: How to represent Compact isometry transformation matrix in Eigen?
body: <p>I have a bunch of isometry [R | t] transformation matrices, i.e. they are 3D rigid transformations. Currently I store them as <a href="http://eigen.tuxfamily.org/dox/" rel="nofollow">Eigen</a> Affine <a href="http://eigen.tuxfamily.org/dox/TutorialGeometry.html" rel="nofollow">transformations</a>, represented in the compact form e.g. <code>Eigen::AffineCompact3d</code> which does not stores the redundant last row of [0 0 0 1].</p>
  
  <p>I am also aware that there is a <code>Eigen::Isometry3d</code> which I guess is typedef of <code>Transform&lt;double, 3, AffineCompact, Isometry&gt;</code>.</p>
  
  <p>I am after Isometry since, the inverse tranformation is much cheaper (transpose) than a general affine inverse. I also know that I can pass a hint, when I use inverse() as <code>affine_mat.inverse(Eigen::Isometry);</code></p>
  
  <p>But I would like to get the isometric inverse behavior without every-time manually passing a hint. In other words, I want to know, what is the best way to replicate the behavior of <code>Eigen::IsometryCompact3d</code> which is surprisingly absent in the Eigen API?</p>