Fix CameraFrame.get_euler_angles to match conventions with set_euler_angles

This commit is contained in:
Grant Sanderson 2022-03-29 19:21:12 -07:00
parent b7a3201fb3
commit a0ba9c8b30

View file

@ -56,7 +56,7 @@ class CameraFrame(Mobject):
return self return self
def get_euler_angles(self): def get_euler_angles(self):
return self.get_orientation().as_euler("xzy") return self.get_orientation().as_euler("zxz")[::-1]
def get_inverse_camera_rotation_matrix(self): def get_inverse_camera_rotation_matrix(self):
return self.get_orientation().as_matrix().T return self.get_orientation().as_matrix().T
@ -73,11 +73,11 @@ class CameraFrame(Mobject):
gamma: float | None = None, gamma: float | None = None,
units: float = RADIANS units: float = RADIANS
): ):
eulers = self.get_euler_angles() # phi, theta, gamma eulers = self.get_euler_angles() # theta, phi, gamma
for i, var in enumerate([phi, theta, gamma]): for i, var in enumerate([theta, phi, gamma]):
if var is not None: if var is not None:
eulers[i] = var * units eulers[i] = var * units
self.set_orientation(Rotation.from_euler('xzy', eulers)) self.set_orientation(Rotation.from_euler("zxz", eulers[::-1]))
return self return self
def reorient( def reorient(