# Actor Rotation Operation around itself

Hi,

You mentioned that you are having a problem with the rotation operation and that you have looked at similar problems on forums but have not been able to find a solution. I am here to help you solve your problem.

Problem:

You want the actor to rotate around its own axis in a desired way.

Attempted Methods:

1. Transformation:
• You have used the RotateX, RotateY, and RotateZ functions with values of 45, 60, and 90 degrees, respectively.
• When you set the Y, Z, and X values to 0 in sequence, the actor does not return to its original state.
``````cur_angles = actor.get_rotate_angles()
transform = vtkTransform()
if axis == "x":
transform.RotateX(-cur_angles[0])
transform.RotateX(angle)
cur_angles[0] = angle
if axis == "y":
transform.RotateY(-cur_angles[1])
transform.RotateY(angle)
cur_angles[1] = angle
if axis == "z":
transform.RotateZ(-cur_angles[2])
transform.RotateZ(angle)
cur_angles[2] = angle

actor.set_rotate_angles(angles=cur_angles)
``````
1. Orientation:
• In this method, the rotations made in sequence affect each other.
``````current_orientation = actor.GetOrientation()
if axis == "x":
actor.SetOrientation(angle, current_orientation[1], current_orientation[2])
if axis == "y":
actor.SetOrientation(current_orientation[0], angle, current_orientation[2])
if axis == "z":
actor.SetOrientation(current_orientation[0], current_orientation[1], angle)
``````
1. Quaternion:
• Here, I can perform the rotation as desired. However, I canâ€™t revert it back to its original state. When I try to rotate it by 45 degrees, it rotates by around 2-3 degrees instead.
``````transform = vtkTransform()
quat = vtkQuaterniond()
if axis == "x":
if axis == "y":
if axis == "z":

transform.RotateWXYZ(quat.GetW(), quat.GetX(), quat.GetY(), quat.GetZ())
``````

i want to make this video rotate operation