'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
name : string
The name of the new coordinate system
q0, q1, q2, q3 : Expr
The quaternions to rotate the coordinate system by
location : Vector(optional)
The location of the new coordinate system\'s origin wrt this
system\'s origin. If not specified, the origins are taken to
be coincident.
vector_names, variable_names : iterable(optional)
Iterables of 3 strings each, with custom names for base
vectors and base scalars of the new system respectively.
Used for simple str printing.
Examples
>>> from sympy.vector import CoordSys3D
>>> from sympy import symbols
>>> q0, q1, q2, q3 = symbols(\'q0 q1 q2 q3\')
>>> N = CoordSys3D(\'N\')
>>> B = N.orient_new_quaternion(\'B\', q0, q1, q2, q3)'

def orient_new_quaternion(self, name, q0, q1, q2, q3, location=None, vector_names=None, variable_names=None):

    orienter = QuaternionOrienter(q0, q1, q2, q3)
    return self.orient_new(name, orienter, location=location, vector_names=vector_names, variable_names=variable_names)
