# ##########################################################################
# Programme Python permettant de tracer les positions d'un point M
# à partir d'abscisses et d'ordonnées issues d'un pointage
# et de tracer le vecteur variation vitesse en un point
# ##########################################################################
# J LE BORGNE - Lycée Suscinio -29600  Morlaix - jerome.lebo@outlook.fr


# IMPORTATION DES MODULES #
from matplotlib.pyplot import *
from mpl_toolkits.mplot3d import Axes3D
from scipy import *

# importation de NUMPY (pour gestion tableaux et calculs) sous l'alias "np"
import numpy as np
# importation de PYPLOT (du module MATPLOTLIB, pour le tracé de courbes) sous l'alias "plt"
import matplotlib.pyplot as plt

## Format pour les graphs(en pouces)
plt.rcParams["figure.figsize"] = (10, 10)

# #################################
# Importation des données
# ################################
t=[]
x=[]
y=[]
""" ######################################################################################
Ici commence le travail à réaliser par les élèves: vérifier le nom de fichier entre ' '
########################################################################################## """
with open('....................','r') as fichier:
    fichier.readline()
    for ligne in fichier:
        ligne_lue=ligne.split(';')
        t.append(float(ligne_lue[0].replace(',','.'))) # [0] permet de récupérer le temps
        x.append(float(ligne_lue[1].replace(',','.'))) # [1] permettrait de récupérer l'abscisse x
        y.append(float(ligne_lue[2].replace(',','.')))  # [2] permettrait de récupérer l'ordonnée y

# #################################
# Fonction qui simplifie le tracé du vecteur vitesse
# afin que l'élève n'ait pas à définir l'origine
# du vecteur en termes de coordonnées
# (pour ne pas mélanger des positions et des coordonées de vecteurs)
# #################################

def draw_Vector2(numero_du_point, abscisse_vecteur, ordonnee_vecteur, couleur,echelle):
    global x,y
    plt.quiver(x[numero_du_point], y[numero_du_point],abscisse_vecteur,ordonnee_vecteur,color=couleur,scale=echelle)


Nbre_Mesures=len(x)

""" ###########################################
Ici commence le travail à réaliser par les élèves
################################################# """
# #####################################
# Tracé de la trajectoire
# #####################################
""" TRAVAIL 1:
Remplacer les symboles ??? par le code Python permettant de tracer l'ordonnée du point en fonction de son abscisse.
Le point représenté sera une croix + de couleur rouge """
plt.plot(?,?,"?")
plt.xlim(min(x),max(x))
plt.ylim(min(y)-2, max(y)+1)


""" TRAVAIL 2:
écrire, à la place des points entre guillemets, les légendes pour les axes,
le titre du graphique"""
plt.title("..............")          # titre du graphique
plt.xlabel("................)")         # nom de la grandeur sur l'axe X
plt.ylabel("...............")         # nom de la grandeur sur l'axe Y


# #####################################
# Vecteur vitesse
# #####################################
""" TRAVAIL 3:
DANS LA BOUCLE ci-dessous:
    - taper ligne 87, à la place des points entre guillemets, la formule de la vitesse vx à calculer en fonctions de x[?] et t[?]
    - taper ligne 88, à la place des points entre guillemets, la formule de la vitesse vy à calculer en fonctions de y[?] et t[?]
    - de tracer le vecteur vitesse au point "i+1" en bleu avec une échelle de 50"""
vx=[]
vy=[]

for i in range (0,Nbre_Mesures-1):
        vx.append(.........................................) # Le calcul est effectué entre deux points entourant la position considérée
        vy.append(.........................................)

        plt.quiver(x[i],#origine du vecteur
                   y[i],#origine du vecteur
                   vx[i],#composante horizontale du vecteur
                   vy[i],#composante verticale du vecteur
                   color="blue",
                   scale_units="xy",
                   scale=5,                     #echelle à modifier
                   alpha=0.5)#transparence)









""" ne pas toucher à la ligne ci-dessous """
Nbre_vitesses=len(vx)           # nombre de vitesses disponibles.
                                # Remarque: Nbre_vitesses=Nre_mesures-2
                                # puisque pour le calcul de Vx, Vy, on ne prend pas le
                                # 1er et le dernier point

# #####################################
# Vecteur variation de vitesse
# #####################################
""" TRAVAIL 4:
En s'inspirant du TRAVAIL 3, taper ci-dessous le code python permettant:
    - de créer une boucle (compteur de boucle nommé "i") allant de 1 à Nbre_vitesses-1
    - de mettre dans une variable ax l'abscisse du vecteur accélération au point i
    - de mettre dans une variable ay l'ordonnée du vecteur accélération au point i
    - de tracer le vecteur accélération au point "i+1" en vert avec une échelle de 5"""

ax=[]
ay=[]
a=[]
for i in range (0,Nbre_vitesses-1):

















    a.append(math.sqrt(ax[i-1]*ax[i-1]+ay[i-1]*ay[i-1])) #calcul de la norme du vecteur accélération



print('ax=', ax, 'm/s2')
print('ay=', ay, 'm/s2')
print('a=',a,'m/s2')



plt.grid()                                                # affiche une grille
savefig('trajectoire_vitesse_variation de vitesse.png')   # permet d'enregistrer, dans le fichier source, une image du graphe
show()                                                    # permet d'afficher le graphe

""" TRAVAIL 5:
Indiquer ci-dessous la valeur de la masse, en kg,de l'objet utilisé
"""
m=5

""" fin du travail """
















