# Chapitre 9 : Description du mouvement 
# Correction de l'activité expérimentale 6 : Guidage des avions 
# Code source Python "niveau initiation"
# 
# ENONCE
#1. REALISER
#c) Compléter le code source pour proposer un programme permettant 
#   de représenter :
#   - les trajectoires des deux avions ;


"""
1. Les positions des avions relevées avec le pointage ont déjà été entrées
dans le code source ci-dessous.
Exécuter le programme pour représenter la trajectoire y1=f(x1) de l'avion 1.

2. Ajouter une ligne au code source ci-dessous pour représenter en bleu la
trajectoire y2=f(x2) de l'avion 2 (bleu = b).
Enregistrer puis exécuter le programme pour représenter les trajectoires des 
deux avions. 

3. Lire les informations données à partir de la ligne 57 de ce programme 
pour répondre à la suite de la question.
"""

#Début du programme
import matplotlib.pyplot as plt

#-----Coordonnées des positions des deux avions-----
t=[0.0, 20.0, 40.0, 60.0, 80.0, 100.0, 120.0, 140.0, 160.0, 180.0, 200.0, 220.0
   , 240.0, 260.0, 280.0, 300.0, 320.0, 340.0]
x1=[3.52E4, 3.79E4, 4.04E4, 4.27E4, 4.52E4, 4.62E4, 4.60E4, 4.60E4, 4.60E4, 
    4.37E4, 4.13E4, 3.89E4, 3.65E4, 3.41E4, 3.21E4, 3.02E4, 2.81E4, 2.61E4]
y1=[-9.67E3, -9.09E3, -8.38E3, -7.68E3, -6.92E3, -4.69E3, -2.52E3, -1.76E2, 
     1.93E3,  3.46E3,  3.99E3,  3.93E3,  3.75E3,  3.63E3,  3.46E3,  3.34E3, 
     3.17E3,  2.99E3]
x2=[4.89E4, 4.69E4, 4.49E4, 4.28E4, 4.11E4, 3.92E4, 3.73E4, 3.53E4, 3.34E4,
    3.14E4, 2.95E4, 2.76E4, 2.59E4, 2.41E4, 2.24E4, 2.08E4, 1.92E4, 1.75E4]
y2=[1.15E4, 1.01E4, 8.79E3, 7.50E3, 6.27E3, 4.98E3, 3.87E3, 3.40E3, 3.52E3,
    3.34E3, 3.22E3, 3.11E3, 2.99E3, 2.87E3, 2.70E3, 2.64E3, 2.46E3, 2.40E3]
   
#-----Tracé des points et des trajectoires y1=f(x1) et y2=f(x2)-----                   
# initialisation de la figure, nom et taille de la fenêtre de visualisation
plt.figure('Guidage des avions',figsize=(9,7),dpi=80)
plt.title('Guidage des avions') # titre 
plt.xlabel('x(en m)')              # légende de l'axe des abscisses
plt.ylabel('y(en m)')              # légende de l'axe des ordonnées
plt.axis('equal')               # même échelle sur les axes 

# Représentation des points de coordonnées (x1(t),y1(t)),rouge'r',forme'o',
# taille 2, reliés entre eux par de fines lignes en pointillés d'épaisseur 0,2 
plt.plot(x1,y1,'ro--',ms=2,lw=0.2)
plt.plot(x2,y2,'bo--',ms=2,lw=0.2)



# SUITE DE L'ENONCE
#1. REALISER
#c) Compléter le code source pour proposer un programme permettant de 
#   représenter :
#   - les vecteurs vitesse des deux avions.

"""
4. Supprimer l'instruction "plt.show()" à la ligne 54 du code source ci-dessus
ainsi que les trois guillemets à la ligne 74 juste au-dessus du code source
suivant, intitulé "Suite du programme", et dans la dernière ligne du code. 
Enregistrer puis exécuter le programme pour représenter des vecteurs vitesse de 
l'avion 1 (largeur du vecteur : width=80 ; rouge = r).

5. Ajouter une ligne au code source ci-dessous pour représenter  
des vecteurs vitesse (en bleu) de l'avion 2 (bleu = b).
"""


#Suite du programme 
#-----Tracé des vecteurs vitesse toutes les 2 positions-----
# e correspond à l'échelle de représentation du vecteur vitesse
e=15

# boucle for pour tracer les différents vecteurs vitesse
for j in range(0,9):
    i=2*j
    plt.arrow(x1[i], y1[i], e*(x1[i+1]-x1[i])/(t[i+1]-t[i]),
              e*(y1[i+1]-y1[i])/(t[i+1]-t[i]),
              length_includes_head="true",width=80,fc='r',ec='r')
    plt.arrow(x2[i], y2[i], e*(x2[i+1]-x2[i])/(t[i+1]-t[i]), 
              e*(y2[i+1]-y2[i])/(t[i+1]-t[i]),width=80,
              length_includes_head="true",fc='b',ec='b')
   
plt.show()