import matplotlib.pyplot as plt


# dla punktow opisanych listami xs, ys, rysuje i opisuje wykres (nie pokazuje go):
def draw_graph(xs, ys):
    plt.plot(xs, ys, marker='o')
    plt.xlabel("Distance in meters")
    plt.ylabel("Gravitational force in Newtons")
    plt.title("Gravitational force vs distance")


def compute_force(m1, m2, r):
    G = 6.674 * 10 ** -11
    return G * m1 * m2 / r ** 2


# generuje punkty opisujace lamana przyblizajaca wykres:
def generate_values(m1, m2, rmin, rmax, step):
    xs = range(rmin, rmax, step)
    ys = [compute_force(m1, m2, x) for x in xs]
    return xs, ys


if __name__ == "__main__":
    # Ciala masy 0.5 kg i 1.5 kg, zakres 100m-1000m:
    xs, ys = generate_values(0.5, 1.5, 100, 1001, 10)
    # Ziemia i cialo masy 1kg na powierzchni morza i 100km wyzej:
    # xs, ys = generate_values(5.972 * 10**24, 1, 6371000, 6471001, 1000)
    draw_graph(xs, ys)
    plt.show()
