class_docstr: Base class to represent the So3 group.
  
  The SO(3) is the group of all rotations about the origin of three-dimensional Euclidean space
  :math:`R^3` under the operation of composition.
  See more: https://en.wikipedia.org/wiki/3D_rotation_group
  
  We internally represent the rotation by a unit quaternion.
  
  Example:
      >>> q = Quaternion.identity()
      >>> s = So3(q)
      >>> s.q
      Parameter containing:
      tensor([1., 0., 0., 0.], requires_grad=True)
class_docstr_tok: ["Base","class","to","represent","the","So3","group",".","The","SO","(","3",")","is","the","group","of","all","rotations","about","the","origin","of","three-dimensional","Euclidean","space",":","math",":","`","R^3","`","under","the","operation","of","composition",".","See","more",":","https",":","\/\/en.wikipedia.org\/wiki\/3D_rotation_group","We","internally","represent","the","rotation","by","a","unit","quaternion",".","Example",":",">",">",">","q","=","Quaternion.identity","(",")",">",">",">","s","=","So3","(","q",")",">",">",">","s.q","Parameter","containing",":","tensor","(","[","1.",",","0.",",","0.",",","0",".","]",",","requires_grad=True",")"]
docstr: Constructor for the base class.
  
  Internally represented by a unit quaternion `q`.
  
  Args:
      data: Quaternion with the shape of :math:`(B, 4)`.
  
  Example:
      >>> data = torch.ones((2, 4))
      >>> q = Quaternion(data)
      >>> So3(q)
      Parameter containing:
      tensor([[1., 1., 1., 1.],
              [1., 1., 1., 1.]], requires_grad=True)
docstr_tok: ["Constructor","for","the","base","class",".","Internally","represented","by","a","unit","quaternion","`","q","`",".","Args",":","data",":","Quaternion","with","the","shape","of",":","math",":","`","(","B",",","4",")","`",".","Example",":",">",">",">","data","=","torch.ones","(","(","2",",","4",")",")",">",">",">","q","=","Quaternion","(","data",")",">",">",">","So3","(","q",")","Parameter","containing",":","tensor","(","[","[","1.",",","1.",",","1.",",","1",".","]",",","[","1.",",","1.",",","1.",",","1",".","]","]",",","requires_grad=True",")"]
code: def __init__(self, q: Quaternion) -> None:
      """Constructor for the base class.
  
      Internally represented by a unit quaternion `q`.
  
      Args:
          data: Quaternion with the shape of :math:`(B, 4)`.
  
      Example:
          >>> data = torch.ones((2, 4))
          >>> q = Quaternion(data)
          >>> So3(q)
          Parameter containing:
          tensor([[1., 1., 1., 1.],
                  [1., 1., 1., 1.]], requires_grad=True)
      """
      super().__init__()
      KORNIA_CHECK_TYPE(q, Quaternion)
      self._q = q
  
imports: from __future__ import annotations
  from typing import Optional
  from kornia.core import Device, Dtype, Module, Tensor, concatenate, eye, stack, tensor, where, zeros, zeros_like
  from kornia.core.check import KORNIA_CHECK_TYPE
  from kornia.geometry.conversions import vector_to_skew_symmetric_matrix
  from kornia.geometry.linalg import batched_dot_product
  from kornia.geometry.quaternion import Quaternion
  from kornia.geometry.vector import Vector3
label_desc: Use image node_id 1 to create a new So3 object from inherited base classes: Module with example: obj = So3(q)