def METHOD_NAME(Input):
  x0 = Input.get('x0', 0)
  y0 = Input.get('y0', 0)
  v0 = Input.get('v0', 1)
  ang = Input.get('ang', 45)
  g = Input.get('g', 9.8)
  timeOption = Input.get('timeOption', 0)
  ang = ang * np.pi / 180
  if timeOption == 0:
    ts = np.linspace(0,1,10)
  else:
    # due to numpy library update, the return shape of np.linspace
    # is changed when an array-like input is provided, i.e. return from time_to_ground
    endTime = time_to_ground(v0, ang, y0)
    ts = np.linspace(0, endTime, 10)
  vx0 = np.cos(ang)*v0
  vy0 = np.sin(ang)*v0
  r = prange(v0, ang, y0=y0, g=g)
  ymax = pMaxHeight(v0, ang, y0=y0, g=g)
  x = np.zeros(len(ts))
  y = np.zeros(len(ts))
  v = np.zeros(len(ts))
  a = np.zeros(len(ts))
  for i,t in enumerate(ts):
    x[i] = x_pos(x0,vx0,t)
    y[i] = y_pos(y0,vy0,t)
    vx, vy, vm = calc_vel(y0, y[i], v0, ang, g)
    v[i] = vm
    a[i] = current_angle(v0, ang, vm)
  t = ts
  return {'x': x,
          'y': y,
          'r': r,
          'ymax': ymax,
          't': ts,
          'v': v,
          'a': a,
          'x0': x0,
          'y0': y0,
          'v0': v0,
          'angle': ang,
          'timeOption': timeOption}