mirror of
https://github.com/3b1b/manim.git
synced 2025-08-05 16:49:03 +00:00
Change Euler axis limits for xz flat plane
This commit is contained in:
parent
51de1fb650
commit
441ac77eae
1 changed files with 14 additions and 7 deletions
|
@ -72,6 +72,7 @@ class CameraFrame(Mobject):
|
||||||
warnings.simplefilter('ignore', UserWarning) # Ignore UserWarnings
|
warnings.simplefilter('ignore', UserWarning) # Ignore UserWarnings
|
||||||
angles = orientation.as_euler(self.euler_axes)[::-1]
|
angles = orientation.as_euler(self.euler_axes)[::-1]
|
||||||
# Handle Gimble lock case
|
# Handle Gimble lock case
|
||||||
|
if self.euler_axes == "zxz":
|
||||||
if np.isclose(angles[1], 0, atol=1e-2):
|
if np.isclose(angles[1], 0, atol=1e-2):
|
||||||
angles[0] = angles[0] + angles[2]
|
angles[0] = angles[0] + angles[2]
|
||||||
angles[2] = 0
|
angles[2] = 0
|
||||||
|
@ -153,7 +154,13 @@ class CameraFrame(Mobject):
|
||||||
):
|
):
|
||||||
angles = self.get_euler_angles()
|
angles = self.get_euler_angles()
|
||||||
new_angles = angles + np.array([dtheta, dphi, dgamma]) * units
|
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])
|
new_rot = Rotation.from_euler(self.euler_axes, new_angles[::-1])
|
||||||
self.set_orientation(new_rot)
|
self.set_orientation(new_rot)
|
||||||
return self
|
return self
|
||||||
|
|
Loading…
Add table
Reference in a new issue