定向器类(docstring)#
- class sympy.vector.orienters.AxisOrienter(angle, axis)[源代码]#
类来表示轴定向器。
- __init__(angle, axis)[源代码]#
轴旋转是围绕任意轴旋转一定角度。角度作为SymPy expr标量提供,轴作为向量提供。
- 参数:
角 :表达式
新系统旋转的角度
axis :矢量
必须绕其旋转的轴
实例
>>> from sympy.vector import CoordSys3D >>> from sympy import symbols >>> q1 = symbols('q1') >>> N = CoordSys3D('N') >>> from sympy.vector import AxisOrienter >>> orienter = AxisOrienter(q1, N.i + 2 * N.j) >>> B = N.orient_new('B', (orienter, ))
- class sympy.vector.orienters.BodyOrienter(angle1, angle2, angle3, rot_order)[源代码]#
类来表示实体定向器。
- __init__(angle1, angle2, angle3, rot_order)[源代码]#
身体方向通过三个连续的简单旋转来获得这个坐标系。
身体固定旋转包括欧拉角和泰特布莱恩角,请参见https://en.wikipedia.org/wiki/Euler_角度。
- 参数:
角度1,角度2,角度3 :表达式
旋转坐标系的三个连续角度
rotation_order :字符串
定义旋转轴顺序的字符串
实例
>>> from sympy.vector import CoordSys3D, BodyOrienter >>> from sympy import symbols >>> q1, q2, q3 = symbols('q1 q2 q3') >>> N = CoordSys3D('N')
“物体”的固定旋转由三个角度和三个物体固定旋转轴来描述。为了确定坐标系D相对于N的方向,每个顺序旋转总是围绕固定到D的正交单位向量。例如,“123”旋转将指定围绕N.i、D.j、D.k的旋转(最初,D.i与N.i相同),因此,
>>> body_orienter = BodyOrienter(q1, q2, q3, '123') >>> D = N.orient_new('D', (body_orienter, ))
与…相同
>>> from sympy.vector import AxisOrienter >>> axis_orienter1 = AxisOrienter(q1, N.i) >>> D = N.orient_new('D', (axis_orienter1, )) >>> axis_orienter2 = AxisOrienter(q2, D.j) >>> D = D.orient_new('D', (axis_orienter2, )) >>> axis_orienter3 = AxisOrienter(q3, D.k) >>> D = D.orient_new('D', (axis_orienter3, ))
可接受的旋转顺序长度为3,以XYZ或123表示,并且不能连续两次绕轴旋转。
>>> body_orienter1 = BodyOrienter(q1, q2, q3, '123') >>> body_orienter2 = BodyOrienter(q1, q2, 0, 'ZXZ') >>> body_orienter3 = BodyOrienter(0, 0, 0, 'XYX')
- class sympy.vector.orienters.SpaceOrienter(angle1, angle2, angle3, rot_order)[源代码]#
类来表示空间定向器。
- __init__(angle1, angle2, angle3, rot_order)[源代码]#
空间旋转与躯干旋转相似,但旋转的应用顺序相反。
- 参数:
角度1,角度2,角度3 :表达式
旋转坐标系的三个连续角度
rotation_order :字符串
定义旋转轴顺序的字符串
实例
>>> from sympy.vector import CoordSys3D, SpaceOrienter >>> from sympy import symbols >>> q1, q2, q3 = symbols('q1 q2 q3') >>> N = CoordSys3D('N')
为了确定坐标系D相对于N的方向,每个顺序旋转总是关于N的正交单位向量。例如,“123”旋转将指定围绕N.i、N.j、N.k.的旋转,因此,
>>> space_orienter = SpaceOrienter(q1, q2, q3, '312') >>> D = N.orient_new('D', (space_orienter, ))
与…相同
>>> from sympy.vector import AxisOrienter >>> axis_orienter1 = AxisOrienter(q1, N.i) >>> B = N.orient_new('B', (axis_orienter1, )) >>> axis_orienter2 = AxisOrienter(q2, N.j) >>> C = B.orient_new('C', (axis_orienter2, )) >>> axis_orienter3 = AxisOrienter(q3, N.k) >>> D = C.orient_new('C', (axis_orienter3, ))
参见
BodyOrienter
定向,以确定与欧拉角相关的系统方向。
- class sympy.vector.orienters.QuaternionOrienter(q0, q1, q2, q3)[源代码]#
类来表示四元数定向器。
- __init__(angle1, angle2, angle3, rot_order)[源代码]#
四元数方向用四元数确定新CoordSys3D的方向,四元数定义为围绕单位向量lambda的有限旋转,以一定量θ。
此方向由四个参数描述:
q0=cos(θ/2)
q1=λx sin(θ/2)
q2=λy sin(θ/2)
q3=λz sin(θ/2)
四元数不接受旋转顺序。
- 参数:
问题0、问题1、问题2、问题3 :表达式
要旋转坐标系的四元数
实例
>>> 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, ))