'Space rotation is similar to Body rotation, but the rotations
are applied in the opposite order.
Parameters
name : string
The name of the new coordinate system
angle1, angle2, angle3 : Expr
Three successive angles to rotate the coordinate system by
rotation_order : string
String defining the order of axes for rotation
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.
See Also
CoordSys3D.orient_new_body : method to orient via Euler
angles
Examples
>>> from sympy.vector import CoordSys3D
>>> from sympy import symbols
>>> q1, q2, q3 = symbols(\'q1 q2 q3\')
>>> N = CoordSys3D(\'N\')
To orient a coordinate system D with respect to N, each
sequential rotation is always about N\'s orthogonal unit vectors.
For example, a \'123\' rotation will specify rotations about
N.i, then N.j, then N.k.
Therefore,
>>> D = N.orient_new_space(\'D\', q1, q2, q3, \'312\')
is same as
>>> B = N.orient_new_axis(\'B\', q1, N.i)
>>> C = B.orient_new_axis(\'C\', q2, N.j)
>>> D = C.orient_new_axis(\'D\', q3, N.k)'

def orient_new_space(self, name, angle1, angle2, angle3, rotation_order, location=None, vector_names=None, variable_names=None):

    orienter = SpaceOrienter(angle1, angle2, angle3, rotation_order)
    return self.orient_new(name, orienter, location=location, vector_names=vector_names, variable_names=variable_names)
