Transform.rotate

Transform.rotate#

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

Compose a rotation matrix.

Create a rotation matrix and compose() 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.

pointVectorLikeFloat, optional

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

multiply_mode‘pre’ | ‘post’, optional

Multiplication mode to use when composing 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.

Examples#

Download Python source code | Download Jupyter notebook

Compose 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.]])

Compose 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.]])

See Also#

rotate_x, rotate_y, rotate_z, rotate_vector

Similar rotation methods.

rotation_matrix, rotation_axis_angle, as_rotation, has_rotation

Get this transform’s rotation component.

pyvista.DataObjectFilters.rotate

Rotate a mesh.