docs: def rotate(self, angle, direction='z', axis=None):
          """
          Returns a new Polyhedron which is the same but rotated about a 
          given axis.
          
          If the axis given is ``None``, the rotation will be computed
          about the Polyhedron's centroid.
          
          :param angle: Rotation angle (in radians)
          :type angle: float
          :param direction: Axis direction ('x', 'y' or 'z')
          :type direction: str
          :param axis: Point in z=0 to perform as rotation axis
          :type axis: tuple (len=2 or 3) or None
          :returns: ``pyny.Polyhedron``
          """
          polygon = np.array([[0,0], [0,1], [1,1]])
          space = Space(Place(polygon, polyhedra=self))
          return space.rotate(angle, direction, axis)[0].polyhedra[0]