docs: def rotation_matrix_from_point_planerot(point, plane_angle, ret_inv=False):
      """
      Compute rotation matrix to go from [0,0,1] to `point`,
      while taking into account the tilted axis of rotation.
  
      First, the matrix rotates to in the polar direction. Then,
      a rotation about the y-axis is performed to match the
      azimuthal angle in the x-z-plane.
  
      This rotation matrix is required for the correct 3D orientation
      of the backpropagated projections.
  
      Parameters
      ----------
      points: list-like, length 3
          The coordinates of the point in 3D.
      axis: list-like, length 3
          The coordinates of the point in 3D.
      ret_inv: bool
          Also return the inverse of the rotation matrix. The inverse
          is required for :func:`scipy.ndimage.interpolation.affine_transform`
          which maps the output coordinates to the input coordinates.
  
      Returns
      -------
      Rmat [, Rmat_inv]: 3x3 ndarrays
          The rotation matrix that rotates [0,0,1] to `point` and
          optionally its inverse.
      """
      # These matrices are correct if there is no tilt of the
      # rotational axis within the detector plane (x-y).
      D, Dinv = rotation_matrix_from_point(point, ret_inv=True)
  
      # We need an additional rotation about the z-axis to correct
      # for the tilt for all the the other cases.
      angz = plane_angle
  
      Rz = np.array([
          [np.cos(angz), -np.sin(angz), 0],
          [np.sin(angz),  np.cos(angz), 0],
          [0,             0,            1],
      ])
  
      DR = np.dot(D, Rz)
      DRinv = np.dot(Rz.T, Dinv)
  
      if ret_inv:
          return DR, DRinv
      else:
          return DR