code: def move_arc(x, y, r, speed = 1, orientation = True):
      # WARNING: This function currently contains inaccuracy likely due to the rounding of trigonometric functions
      
  
      _x, _y = win32api.GetCursorPos()
      c_len = (r**2 - (((x - _x)/2)**2 + ((y - _y)/2)**2))**0.5
      t = (c_len**2/((y - _y)**2 + (x - _x)**2))**0.5
      t = t if orientation else -t
      centre = ((_x + x)/2 + t*(_x - x), (_y + y)/2 + t*(y - _y))
      if any(isinstance(ordinate, complex) for ordinate in centre):
          raise ValueError("Radius too low - minimum: {}".format(((x - _x)**2 + (y - _y)**2)**0.5/2))
      theta = math.atan2(_y - centre[1], _x - centre[0])
      end = math.atan2(y - centre[1], x - centre[0])
      while theta < end:
          move(*list(map(round, (centre[0] + r*math.cos(theta), centre[1] + r*math.sin(theta)))))
          theta += speed/100
          time.sleep(0.01)
      move(x, y)
docs: Moves the cursor in an arc of radius r to (x, y) at a certain speed
  
      :param x: target x-ordinate
      :param y: target y-ordinate
      :param r: radius
      :param speed: pixel traversal rate
      :param orientation: direction of arc
      :return: None