class_docstr: The fly camera provides a way to explore 3D data using an
  interaction style that resembles a flight simulator.
  
  For this camera, the ``scale_factor`` indicates the speed of the
  camera in units per second, and the ``center`` indicates the
  position of the camera.
  
  Parameters
  ----------
  fov : float
      Field of view. Default 60.0.
  rotation : float | None
      Rotation to use.
  **kwargs : dict
      Keyword arguments to pass to `BaseCamera`.
  
  Notes
  -----
  Interacting with this camera might need a bit of practice.
  The reaction to key presses can be customized by modifying the
  keymap property.
  
  Moving:
  
    * arrow keys, or WASD to move forward, backward, left and right
    * F and C keys move up and down
    * Space bar to brake
  
  Viewing:
  
    * Use the mouse while holding down LMB to control the pitch and yaw.
    * Alternatively, the pitch and yaw can be changed using the keys
      IKJL
    * The camera auto-rotates to make the bottom point down, manual
      rolling can be performed using Q and E.
docstr: Get the full rotation. This rotation is composed of the
  normal rotation plus the extra rotation due to the current
  interaction of the user.
docstr_tok: ["Get","the","full","rotation",".","This","rotation","is","composed","of","the","normal","rotation","plus","the","extra","rotation","due","to","the","current","interaction","of","the","user","."]
code: def rotation(self):
      """Get the full rotation. This rotation is composed of the
      normal rotation plus the extra rotation due to the current
      interaction of the user.
      """
      rotation = self._rotation2 * self._rotation1
      return rotation.normalize()
  
imports: from __future__ import division
  import math
  import numpy
  from ...app import Timer
  from ...util.quaternion import Quaternion
  from ...util import keys
  from .perspective import PerspectiveCamera
label_desc: Use image node_id 2 for calling the FlyCamera obj's underlying member method code with example usage: obj.rotation() and returns: rotation