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)
code: def __mul__(self, right: So2) -> So2:
      ...
  
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 4 for calling the So2 obj's underlying member method code with example usage: obj.__mul__(right) without return types