docs: def on_drag(self, cursor_x, cursor_y):
          """ Mouse cursor is moving
              Glut calls this function (when mouse button is down)
              and pases the mouse cursor postion in window coords as the mouse moves.
          """
          from blmath.geometry.transform.rodrigues import as_rotation_matrix
          if self.isdragging:
              mouse_pt = arcball.Point2fT(cursor_x, cursor_y)
              # Update End Vector And Get Rotation As Quaternion
              ThisQuat = self.arcball.drag(mouse_pt)
              # Convert Quaternion Into Matrix3fT
              self.thisrot = arcball.Matrix3fSetRotationFromQuat4f(ThisQuat)
              # Use correct Linear Algebra matrix multiplication C = A * B
              # Accumulate Last Rotation Into This One
              self.thisrot = arcball.Matrix3fMulMatrix3f(self.lastrot, self.thisrot)
              # make sure it is a rotation
              self.thisrot = as_rotation_matrix(self.thisrot)
              # Set Our Final Transform's Rotation From This One
              self.transform = arcball.Matrix4fSetRotationFromMatrix3f(self.transform, self.thisrot)
              glut.glutPostRedisplay()
          return