docs: def rotvec2mat(u, phi):
      """Convert rotation from axis and angle to matrix representation"""
  
      phi = np.squeeze(phi)
      norm_u = np.linalg.norm(u)
  
      if norm_u < 1e-12:
          raise Exception("the rotation vector is equal to zero")
  
      u = u / norm_u
      # http://en.wikipedia.org/wiki/Rotation_matrix
      s = np.sin(phi)
      c = np.cos(phi)
      t = 1 - c
  
      ux = u[0]
      uy = u[1]
      uz = u[2]
      res = np.array([[t * ux * ux + c, t * ux * uy - s * uz, t * ux * uz + s * uy],
                      [t * ux * uy + s * uz, t * uy * uy + c, t * uy * uz - s * ux],
                      [t * ux * uz - s * uy, t * uy * uz + s * ux, t * uz * uz + c]])
  
      return res