class_docstr: Class to denote a quaternion-orienter.
docstr: Quaternion orientation orients the new CoordSys3D with
  Quaternions, defined as a finite rotation about lambda, a unit
  vector, by some amount theta.
  
  This orientation is described by four parameters:
  
  q0 = cos(theta/2)
  
  q1 = lambda_x sin(theta/2)
  
  q2 = lambda_y sin(theta/2)
  
  q3 = lambda_z sin(theta/2)
  
  Quaternion does not take in a rotation order.
  
  Parameters
  ==========
  
  q0, q1, q2, q3 : Expr
      The quaternions to rotate the coordinate system by
  
  Examples
  ========
  
  >>> from sympy.vector import CoordSys3D
  >>> from sympy import symbols
  >>> q0, q1, q2, q3 = symbols('q0 q1 q2 q3')
  >>> N = CoordSys3D('N')
  >>> from sympy.vector import QuaternionOrienter
  >>> q_orienter = QuaternionOrienter(q0, q1, q2, q3)
  >>> B = N.orient_new('B', (q_orienter, ))
docstr_tok: ["Quaternion","orientation","orients","the","new","CoordSys3D","with","Quaternions",",","defined","as","a","finite","rotation","about","lambda",",","a","unit","vector",",","by","some","amount","theta",".","This","orientation","is","described","by","four","parameters",":","q0","=","cos","(","theta\/2",")","q1","=","lambda_x","sin","(","theta\/2",")","q2","=","lambda_y","sin","(","theta\/2",")","q3","=","lambda_z","sin","(","theta\/2",")","Quaternion","does","not","take","in","a","rotation","order",".","Parameters","==========","q0",",","q1",",","q2",",","q3",":","Expr","The","quaternions","to","rotate","the","coordinate","system","by","Examples","========",">",">",">","from","sympy.vector","import","CoordSys3D",">",">",">","from","sympy","import","symbols",">",">",">","q0",",","q1",",","q2",",","q3","=","symbols","(","'q0","q1","q2","q3","'",")",">",">",">","N","=","CoordSys3D","(","'N","'",")",">",">",">","from","sympy.vector","import","QuaternionOrienter",">",">",">","q_orienter","=","QuaternionOrienter","(","q0",",","q1",",","q2",",","q3",")",">",">",">","B","=","N.orient_new","(","'","B","'",",","(","q_orienter",",",")",")"]
code: def __init__(self, angle1, angle2, angle3, rot_order):
      """
      Quaternion orientation orients the new CoordSys3D with
      Quaternions, defined as a finite rotation about lambda, a unit
      vector, by some amount theta.
  
      This orientation is described by four parameters:
  
      q0 = cos(theta/2)
  
      q1 = lambda_x sin(theta/2)
  
      q2 = lambda_y sin(theta/2)
  
      q3 = lambda_z sin(theta/2)
  
      Quaternion does not take in a rotation order.
  
      Parameters
      ==========
  
      q0, q1, q2, q3 : Expr
          The quaternions to rotate the coordinate system by
  
      Examples
      ========
  
      >>> from sympy.vector import CoordSys3D
      >>> from sympy import symbols
      >>> q0, q1, q2, q3 = symbols('q0 q1 q2 q3')
      >>> N = CoordSys3D('N')
      >>> from sympy.vector import QuaternionOrienter
      >>> q_orienter = QuaternionOrienter(q0, q1, q2, q3)
      >>> B = N.orient_new('B', (q_orienter, ))
  
      """
      # Dummy initializer for docstrings
      pass
  
imports: from sympy.core.basic import Basic
  from sympy.core.sympify import sympify
  from sympy.functions.elementary.trigonometric import cos, sin
  from sympy.matrices.dense import eye, rot_axis1, rot_axis2, rot_axis3
  from sympy.matrices.immutable import ImmutableDenseMatrix
  from sympy.core.cache import cacheit
  from sympy.core.symbol import Str
  import sympy.vector
label_desc: Use image node_id 2 to create a new QuaternionOrienter object from inherited base classes: Orienter with example: obj = QuaternionOrienter(angle1, angle2, angle3, rot_order)