Repository: ManimCommunity/manim
File: manim/scene/three_d_scene.py (Python)

Code before:

        def update_phi(m, dt):
            val_tracker_phi.increment_value(dt * rate)
            val_for_up_down = 0.1 * np.cos(val_tracker_phi.get_value())
            return m.set_value(origin_phi + val_for_up_down)

        self.renderer.camera.phi_tracker.add_updater(update_phi)
        self.add(self.renderer.camera.phi_tracker)

    def stop_3dillusion_camera_rotation(self):
        """
        This method stops all illusion camera rotations.
        """
        self.renderer.camera.theta_tracker.clear_updaters()
        self.remove(self.renderer.camera.theta_tracker)
        self.renderer.camera.phi_tracker.clear_updaters()
        self.remove(self.renderer.camera.phi_tracker)

    def move_camera(
        self,
        phi: Optional[float] = None,
        theta: Optional[float] = None,
        gamma: Optional[float] = None,
        distance: Optional[float] = None,
        frame_center: Optional[Union["Mobject", Sequence[float]]] = None,
        added_anims: List["Animation"] = [],
        **kwargs,
    ):
        """
        This method animates the movement of the camera
        to the given spherical coordinates.

        Parameters
        ----------
        phi : int or float, optional
            The polar angle i.e the angle between Z_AXIS and Camera through ORIGIN in radians.

        theta : int or float, optional
            The azimuthal angle i.e the angle that spins the camera around the Z_AXIS.

        distance : int or float, optional
            The radial distance between ORIGIN and Camera.

        gamma : int or float, optional
            The rotation of the camera about the vector from the ORIGIN to the Camera.

        frame_center : list, tuple or np.array, optional
            The new center of the camera frame in cartesian coordinates

        added_anims : list, optional
            Any other animations to be played at the same time.

Review comment (suggestion):
**(suggestion, typing)** Doesn't actually exclusively need to be a list. `Iterable` would be more appropriate. 
```suggestion
        added_anims: Iterable["Animation"] = [],
```

Code after:

        def update_phi(m, dt):
            val_tracker_phi.increment_value(dt * rate)
            val_for_up_down = 0.1 * np.cos(val_tracker_phi.get_value())
            return m.set_value(origin_phi + val_for_up_down)

        self.renderer.camera.phi_tracker.add_updater(update_phi)
        self.add(self.renderer.camera.phi_tracker)

    def stop_3dillusion_camera_rotation(self):
        """
        This method stops all illusion camera rotations.
        """
        self.renderer.camera.theta_tracker.clear_updaters()
        self.remove(self.renderer.camera.theta_tracker)
        self.renderer.camera.phi_tracker.clear_updaters()
        self.remove(self.renderer.camera.phi_tracker)

    def move_camera(
        self,
        phi: Optional[float] = None,
        theta: Optional[float] = None,
        gamma: Optional[float] = None,
        distance: Optional[float] = None,
        frame_center: Optional[Union["Mobject", Sequence[float]]] = None,
        added_anims: Iterable["Animation"] = [],
        **kwargs,
    ):
        """
        This method animates the movement of the camera
        to the given spherical coordinates.

        Parameters
        ----------
        phi : int or float, optional
            The polar angle i.e the angle between Z_AXIS and Camera through ORIGIN in radians.

        theta : int or float, optional
            The azimuthal angle i.e the angle that spins the camera around the Z_AXIS.

        distance : int or float, optional
            The radial distance between ORIGIN and Camera.

        gamma : int or float, optional
            The rotation of the camera about the vector from the ORIGIN to the Camera.

        frame_center : list, tuple or np.array, optional
            The new center of the camera frame in cartesian coordinates.

        added_anims : list, optional
            Any other animations to be played at the same time.