docs: def dot(self, other_tf):
          """Compose this rigid transform with another.
  
          This transform is on the left-hand side of the composition.
  
          Parameters
          ----------
          other_tf : :obj:`RigidTransform`
              The other RigidTransform to compose with this one.
  
          Returns
          -------
          :obj:`RigidTransform`
              A RigidTransform that represents the composition.
  
          Raises
          ------
          ValueError
              If the to_frame of other_tf is not identical to this transform's
              from_frame.
          """
          if other_tf.to_frame != self.from_frame:
              raise ValueError('To frame of right hand side ({0}) must match from frame of left hand side ({1})'.format(other_tf.to_frame, self.from_frame))
  
          pose_tf = self.matrix.dot(other_tf.matrix)
          rotation, translation = RigidTransform.rotation_and_translation_from_matrix(pose_tf)
  
          if isinstance(other_tf, SimilarityTransform):
              return SimilarityTransform(self.rotation, self.translation, scale=1.0,
                                         from_frame=self.from_frame,
                                         to_frame=self.to_frame) * other_tf
          return RigidTransform(rotation, translation,
                                from_frame=other_tf.from_frame,
                                to_frame=self.to_frame)