pyvista.Transform.rotate#
- Transform.rotate(
- rotation: RotationLike,
- *,
- point: VectorLike[float] | None = None,
- multiply_mode: Literal['pre', 'post'] | None = None,
Concatenate a rotation matrix.
Create a rotation matrix and
concatenate()
it with the current transformationmatrix
according to pre-multiply or post-multiply semantics.Internally, the matrix is stored in the
matrix_list
.- Parameters:
- rotation
RotationLike
3x3 rotation matrix or a SciPy
Rotation
object.- point
VectorLike
[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 thematrix_list
:translate()
topoint
before the rotationtranslate()
away frompoint
after the rotation
- 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.
- rotation
See also
pyvista.DataSet.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.]])