# import matplotlib        # only mac, if plotting doesn't work otherwise
# matplotlib.use("TkAgg")  # only mac, if plotting doesn't work otherwise

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation # IKKE PENSUM!

fig, ax = plt.subplots()

ax.set_xlim(0, 1)
ax.set_ylim(0, 1)


data = np.random.rand(5,4)
data[:, 2:] -= 0.5
data[:, 2:] *= 0.02

#print(data)

pos = data[:, :2]
vel = data[:, 2:]

#print(pos, vel)

xdata = data[:, 0]
ydata = data[:, 1]
xvel = data[:, 2]
yvel = data[:, 3]

#print(xdata.shape)

line, = plt.plot([], [], 'o')

def update(frame):
    global pos, vel, xdata, ydata, xvel, yvel

    dt = 1

    #yvel -= 0.002 * dt # gravitation

    pos += vel * dt # time step updates positions


    outside_x = (xdata > 1) | (xdata < 0)
    print(outside_x)

    xvel[ outside_x ] *= -1
    yvel[ (ydata > 1) | (ydata < 0) ] *= -1

    xdata[ xdata > 1 ] = 1
    ydata[ ydata > 1 ] = 1

    xdata[ xdata < 0 ] = 0
    ydata[ ydata < 0 ] = 0

    line.set_data(xdata, ydata)

    return line,

ani = FuncAnimation(
    fig,
    update,
    frames=200,
    interval=25,
    repeat=False,
    blit=True,
)

#with open('sine.html','w') as f:
#    f.write(ani.to_html5_video())

#ani.save('sine.mp4')

plt.show()