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: Set initial cursor window coordinates and pick constrain-axis.
docstr_tok: ["Set","initial","cursor","window","coordinates","and","pick","constrain-axis","."]
code: def down(self, point):
      """Set initial cursor window coordinates and pick constrain-axis."""
      self._vdown = arcball_map_to_sphere(
          point, self._center, self._radius
      )
      self._qdown = self._qpre = self._qnow
      if self._constrain and self._axes is not None:
          self._axis = arcball_nearest_axis(self._vdown, self._axes)
          self._vdown = arcball_constrain_to_axis(
              self._vdown, self._axis
          )
      else:
          self._axis = None
  
imports: import math
  import numpy
label_desc: Use image node_id 6 for calling the Arcball obj's underlying member method code with example usage: obj.down(point) without return types