from math import sin, cos, radians
import matplotlib.pyplot as plt


# patrz poprzednie przyklady
def frange(start, final, step=1):
    result = []
    while start < final:
        result.append(start)
        start = start + step
    return result


# zwraca punkt w czasie t dla poczatkowych wartosci predkosci v0 i kata alpha:
def compute_position(alpha, v0, t):
    g = 9.81
    return v0 * t * cos(alpha), t * v0 * sin(alpha) - g * t**2 / 2


# generuje ciag punktow jako listy xs, ys:
def generate_values(alpha, v0, step):
    g = 9.81
    tmax = 2 * v0 * sin(alpha) / g

    time = frange(0, tmax, step)
    xs = []
    ys = []
    for t in time:
        x, y = compute_position(alpha, v0, t)
        xs.append(x)
        ys.append(y)

    return xs, ys


if __name__ == "__main__":
    v0 = 20
    alpha_list = [10, 45, 60, 80]

    for alpha in alpha_list:
        xs, ys = generate_values(radians(alpha), v0, 0.001)
        plt.plot(xs,ys)

    plt.xlabel("x-coordinate")
    plt.ylabel("y-coordinate")
    plt.title("Projectile motion of a ball")
    plt.legend(alpha_list)

    plt.show()
