import matplotlib.pyplot as plt
import csv

#fonction permettant de lire le fichier csv et de modifier la virgule par un point le cas échéant
def readColCSV(fichier,sep,n) :
    file=open(fichier,"r")
    reader=csv.reader(file,delimiter=sep)
    col=[]
    for row in reader :
        if(row[n][0].isdigit()) :
            notation_point=row[n].replace(",",".")
            col.append(float(notation_point))
    return col

#nom du fichier à traiter
fichier=input("Quel est le nom du fichier de pointage (sans l'extension .csv)?")+".csv"

#Appel de la fonction pour récupérer et lire les données.
t=readColCSV(fichier,";",0)
x=readColCSV(fichier, ";",1)
y=readColCSV(fichier, ";",2)

#Calcul des coordonnées Vx et Vy des vecteurs vitesse
Vx=[]
for i in range(len(x)-1) :
    Vx=Vx+[(x[i+1]-x[i])/(t[i+1]-t[i])]

Vy=[]
for i in range(len(y)-1) :
    Vy=Vy+[(y[i+1]-y[i])/(t[i+1]-t[i])]


#préparation de la zone graphique
plt.grid()
plt.title("Représentation du vecteur vitesse")
plt.xlabel('$x$ (m)')
plt.ylabel('$y$ (m)')
#tracé des points de la trajectoire
plt.plot(x,y,'ro')
#tracé des vecteurs vitesse avec un facteur d'échelle
for i in range(len(t)-1):
    plt.arrow(x[i],y[i],Vx[i]/100, Vy[i]/100,head_width=0.01, head_length=0.01,color="blue")
    plt.text(x[i]+0.01,y[i],r"$\vec{v}$"+str(i+1),color="blue")
#Légende
plt.text(0.7,0.1,"Echelle 1 m $\leftrightarrow$ 100 m/s", color="blue")
plt.show()