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: Constructor for the base class.
  
  Internally represented by complex number `z`.
  
  Args:
      z: Complex number with the shape of :math:`(B, 1)` or :math:`(B)`.
  
  Example:
      >>> real = torch.tensor(1.0)
      >>> imag = torch.tensor(2.0)
      >>> So2(torch.complex(real, imag)).z
      Parameter containing:
      tensor(1.+2.j, requires_grad=True)
docstr_tok: ["Constructor","for","the","base","class",".","Internally","represented","by","complex","number","`","z","`",".","Args",":","z",":","Complex","number","with","the","shape","of",":","math",":","`","(","B",",","1",")","`","or",":","math",":","`","(","B",")","`",".","Example",":",">",">",">","real","=","torch.tensor","(","1.0",")",">",">",">","imag","=","torch.tensor","(","2.0",")",">",">",">","So2","(","torch.complex","(","real",",","imag",")",")",".z","Parameter","containing",":","tensor","(","1.+2.j",",","requires_grad=True",")"]
code: def __init__(self, z: Tensor) -> None:
      """Constructor for the base class.
  
      Internally represented by complex number `z`.
  
      Args:
          z: Complex number with the shape of :math:`(B, 1)` or :math:`(B)`.
  
      Example:
          >>> real = torch.tensor(1.0)
          >>> imag = torch.tensor(2.0)
          >>> So2(torch.complex(real, imag)).z
          Parameter containing:
          tensor(1.+2.j, requires_grad=True)
      """
      super().__init__()
      KORNIA_CHECK_IS_TENSOR(z)
      # TODO change to KORNIA_CHECK_SHAPE once there is multiple shape support
      check_so2_z_shape(z)
      self._z = Parameter(z)
  
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 1 to create a new So2 object from inherited base classes: Module with example: obj = So2(z)