Change Euler axis limits for xz flat plane

This commit is contained in:
Grant Sanderson 2024-08-26 08:22:29 -05:00
parent 51de1fb650
commit 441ac77eae

View file

@ -72,6 +72,7 @@ class CameraFrame(Mobject):
warnings.simplefilter('ignore', UserWarning) # Ignore UserWarnings
angles = orientation.as_euler(self.euler_axes)[::-1]
# Handle Gimble lock case
if self.euler_axes == "zxz":
if np.isclose(angles[1], 0, atol=1e-2):
angles[0] = angles[0] + angles[2]
angles[2] = 0
@ -153,7 +154,13 @@ class CameraFrame(Mobject):
):
angles = self.get_euler_angles()
new_angles = angles + np.array([dtheta, dphi, dgamma]) * units
new_angles[1] = clip(new_angles[1], 0, PI) # Limit range for phi
# Limit range for phi
if self.euler_axes == "zxz":
new_angles[1] = clip(new_angles[1], 0, PI)
elif self.euler_axes == "zxy":
new_angles[1] = clip(new_angles[1], -PI / 2, PI / 2)
new_rot = Rotation.from_euler(self.euler_axes, new_angles[::-1])
self.set_orientation(new_rot)
return self