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: Return homogeneous rotation matrix.
docstr_tok: ["Return","homogeneous","rotation","matrix","."]
code: def matrix(self):
      """Return homogeneous rotation matrix."""
      return quaternion_matrix(self._qnow)
  
imports: import math
  import numpy
label_desc: Use image node_id 9 for calling the Arcball obj's underlying member method code with example usage: obj.matrix() and returns: quaternion_matrix