pyvista.Transform.rotate

pyvista.Transform.rotate#

Transform.rotate(
rotation: RotationLike,
*,
point: VectorLike[float] | None = None,
multiply_mode: Literal['pre', 'post'] | None = None,
) Transform[source]#

Concatenate a rotation matrix.

Create a rotation matrix and concatenate() it with the current transformation matrix according to pre-multiply or post-multiply semantics. The rotation may be right-handed or left-handed.

Internally, the matrix is stored in the matrix_list.

Parameters:
rotationRotationLike

3x3 rotation matrix or a SciPy Rotation object.

pointVectorLike[float], optional

Point to rotate about. By default, the object’s point is used, but this can be overridden. If set, two additional transformations are concatenated and added to the matrix_list:

multiply_mode‘pre’ | ‘post’, optional

Multiplication mode to use when concatenating the matrix. By default, the object’s multiply_mode is used, but this can be overridden. Set this to 'pre' for pre-multiplication or 'post' for post-multiplication.

See also

pyvista.DataSetFilters.rotate

Rotate a mesh.

Examples

Concatenate a rotation matrix. In this case the rotation rotates about the z-axis by 90 degrees.

>>> import pyvista as pv
>>> rotation_z_90 = [[0, -1, 0], [1, 0, 0], [0, 0, 1]]
>>> transform = pv.Transform().rotate(rotation_z_90)
>>> transform.matrix
array([[ 0., -1.,  0.,  0.],
       [ 1.,  0.,  0.,  0.],
       [ 0.,  0.,  1.,  0.],
       [ 0.,  0.,  0.,  1.]])

Concatenate a second rotation matrix. In this case we use the same rotation as before.

>>> _ = transform.rotate(rotation_z_90)

The result is a matrix that rotates about the z-axis by 180 degrees.

>>> transform.matrix
array([[-1.,  0.,  0.,  0.],
       [ 0., -1.,  0.,  0.],
       [ 0.,  0.,  1.,  0.],
       [ 0.,  0.,  0.,  1.]])

Rotate about a point. Check the matrix_list to see that a translation is added before and after the rotation.

>>> transform = pv.Transform().rotate(rotation_z_90, point=(1, 2, 3))
>>> translation_to_origin = transform.matrix_list[0]
>>> translation_to_origin
array([[ 1.,  0.,  0., -1.],
       [ 0.,  1.,  0., -2.],
       [ 0.,  0.,  1., -3.],
       [ 0.,  0.,  0.,  1.]])
>>> rotation = transform.matrix_list[1]
>>> rotation
array([[ 0., -1.,  0.,  0.],
       [ 1.,  0.,  0.,  0.],
       [ 0.,  0.,  1.,  0.],
       [ 0.,  0.,  0.,  1.]])
>>> translation_from_origin = transform.matrix_list[2]
>>> translation_from_origin
array([[1., 0., 0., 1.],
       [0., 1., 0., 2.],
       [0., 0., 1., 3.],
       [0., 0., 0., 1.]])