class_docstr: Base class to represent the So2 group.
  
  The SO(2) is the group of all rotations about the origin of two-dimensional Euclidean space
  :math:`R^2` under the operation of composition.
  See more: https://en.wikipedia.org/wiki/Orthogonal_group#Special_orthogonal_group
  
  We internally represent the rotation by a complex number.
  
  Example:
      >>> real = torch.tensor([1.0])
      >>> imag = torch.tensor([2.0])
      >>> So2(torch.complex(real, imag))
      Parameter containing:
      tensor([1.+2.j], requires_grad=True)
docstr: Converts elements from vector space to lie algebra. Returns matrix of shape :math:`(B, 2, 2)`.
  
  Args:
      theta: angle in radians of shape :math:`(B)`.
  
  Example:
      >>> theta = torch.tensor(3.1415/2)
      >>> So2.hat(theta)
      tensor([[0.0000, 1.5707],
              [1.5707, 0.0000]])
docstr_tok: ["Converts","elements","from","vector","space","to","lie","algebra",".","Returns","matrix","of","shape",":","math",":","`","(","B",",","2",",","2",")","`",".","Args",":","theta",":","angle","in","radians","of","shape",":","math",":","`","(","B",")","`",".","Example",":",">",">",">","theta","=","torch.tensor","(","3.1415\/2",")",">",">",">","So2.hat","(","theta",")","tensor","(","[","[","0.0000",",","1.5707","]",",","[","1.5707",",","0.0000","]","]",")"]
code: def hat(theta: Tensor) -> Tensor:
      """Converts elements from vector space to lie algebra. Returns matrix of shape :math:`(B, 2, 2)`.
  
      Args:
          theta: angle in radians of shape :math:`(B)`.
  
      Example:
          >>> theta = torch.tensor(3.1415/2)
          >>> So2.hat(theta)
          tensor([[0.0000, 1.5707],
                  [1.5707, 0.0000]])
      """
      # TODO change to KORNIA_CHECK_SHAPE once there is multiple shape support
      check_so2_theta_shape(theta)
      z = zeros_like(theta)
      row0 = stack((z, theta), -1)
      row1 = stack((theta, z), -1)
      return stack((row0, row1), -1)
  
imports: from __future__ import annotations
  from typing import Optional, overload
  from kornia.core import Device, Dtype, Module, Parameter, Tensor, complex, rand, stack, tensor, zeros_like
  from kornia.core.check import KORNIA_CHECK, KORNIA_CHECK_IS_TENSOR
  from kornia.geometry.liegroup._utils import check_so2_matrix, check_so2_matrix_shape, check_so2_t_shape, check_so2_theta_shape, check_so2_z_shape
  from kornia.geometry.vector import Vector2
label_desc: Use image node_id 10 for calling the So2 obj's underlying member method code with example usage: obj.hat(theta) and returns: stack