class_docstr: Virtual Trackball Control.
  
  >>> ball = Arcball()
  >>> ball = Arcball(initial=numpy.identity(4))
  >>> ball.place([320, 320], 320)
  >>> ball.down([500, 250])
  >>> ball.drag([475, 275])
  >>> R = ball.matrix()
  >>> numpy.allclose(numpy.sum(R), 3.90583455)
  True
  >>> ball = Arcball(initial=[1, 0, 0, 0])
  >>> ball.place([320, 320], 320)
  >>> ball.setaxes([1, 1, 0], [-1, 1, 0])
  >>> ball.constrain = True
  >>> ball.down([400, 200])
  >>> ball.drag([200, 400])
  >>> R = ball.matrix()
  >>> numpy.allclose(numpy.sum(R), 0.2055924)
  True
  >>> ball.next()
docstr: Continue rotation in direction of last drag.
docstr_tok: ["Continue","rotation","in","direction","of","last","drag","."]
code: def next(self, acceleration=0.0):
      """Continue rotation in direction of last drag."""
      q = quaternion_slerp(
          self._qpre, self._qnow, 2.0 + acceleration, False
      )
      self._qpre, self._qnow = self._qnow, q
  
imports: import math
  import numpy
label_desc: Use image node_id 8 for calling the Arcball obj's underlying member method code with example usage: obj.next(acceleration) without return types