class_docstr: 3D camera class that orbits around a center point while
  maintaining a view on a center point.
  
  For this camera, the ``scale_factor`` indicates the zoom level, and
  the ``center`` indicates the position to put at the center of the
  view.
  
  Parameters
  ----------
  fov : float
      Field of view. Zero (default) means orthographic projection.
  distance : float | None
      The distance of the camera from the rotation point (only makes sense
      if fov > 0). If None (default) the distance is determined from the
      scale_factor and fov.
  translate_speed : float
      Scale factor on translation speed when moving the camera center point.
  **kwargs : dict
      Keyword arguments to pass to `BaseCamera`.
  
  Notes
  -----
  Interaction:
  
      * LMB: orbits the view around its center point.
      * RMB or scroll: change scale_factor (i.e. zoom level)
      * SHIFT + LMB: translate the center point
      * SHIFT + RMB: change FOV
docstr: Convert mouse x, y movement into x, y, z translations
docstr_tok: ["Convert","mouse","x",",","y","movement","into","x",",","y",",","z","translations"]
code: def _dist_to_trans(self, dist):
      """Convert mouse x, y movement into x, y, z translations"""
      rot, x, y, z = self._quaternion.get_axis_angle()
      tr = MatrixTransform()
      tr.rotate(180 * rot / np.pi, (x, y, z))
      dx, dz, dy = (
          np.dot(tr.matrix[:3, :3], (dist[0], dist[1], 0.0))
          * self.translate_speed
      )
      return dx, dy, dz
  
file_path: vispy/vispy/scene/cameras/arcball.py
imports: from __future__ import division
  import numpy
  from ...util import transforms
  from ...util.quaternion import Quaternion
  from ...visuals.transforms import MatrixTransform
  from .perspective import Base3DRotationCamera
label_desc: Use image node_id 4 for calling the ArcballCamera obj's underlying member method code with example usage: obj._dist_to_trans(dist) and returns: dx,  dy,  dz