Correction de l'activité 14 : Courbe du chien

Le nuage de points L'évolution de la distance maitre-chien
Distance, en m, au bout de 0 secondes : 5.0
Distance, en m, au bout de 1 secondes : 4.12310562562
Distance, en m, au bout de 2 secondes : 3.50267290775
Distance, en m, au bout de 3 secondes : 3.12646788502
Distance, en m, au bout de 4 secondes : 2.93092403502
Distance, en m, au bout de 5 secondes : 2.84035501383
Distance, en m, au bout de 6 secondes : 2.80112629069
Distance, en m, au bout de 7 secondes : 2.78468228249
Distance, en m, au bout de 8 secondes : 2.77788861186
Distance, en m, au bout de 9 secondes : 2.77509908202
Distance, en m, au bout de 10 secondes : 2.77395659904
Distance, en m, au bout de 11 secondes : 2.77348917309
Distance, en m, au bout de 12 secondes : 2.77329801656
Distance, en m, au bout de 13 secondes : 2.77321985575
Distance, en m, au bout de 14 secondes : 2.77318789936
Distance, en m, au bout de 15 secondes : 2.77317483424
Distance, en m, au bout de 16 secondes : 2.77316949273
Distance, en m, au bout de 17 secondes : 2.77316730893
Distance, en m, au bout de 18 secondes : 2.77316641611
Distance, en m, au bout de 19 secondes : 2.7731660511
Distance, en m, au bout de 20 secondes : 2.77316590187

Les résultats ci-dessus ont été obtenus à l'aide du code suivant.

	
#-------------------------------------------------------------------------------
#Importation des bibliothèques nécessaires au fonctionnement du programme
#-------------------------------------------------------------------------------
#Bibliothèque mathématiques
#https://docs.python.org/fr/3.5/library/math.html
from math import*

#Autres bibliothèques
#Importation du module pylab qui permet de dessiner dans un repère
#http://www.courspython.com/introduction-courbes.html
from pylab import*



#-------------------------------------------------------------------------------
#Création des fonctions Python nécessaires au fonctionnement du programme
#-------------------------------------------------------------------------------


#Fonction qui calcule la distance entre deux points dont on donne les coordonnées en paramètres
def distance(absArbitre,ordArbitre,absBallon,ordBallon):
    dist=sqrt((absArbitre-absBallon)**2+(ordArbitre-ordBallon)**2)
    return dist


#création de la fonction qui permet de trouver l'abscisse de l'arbitre connaissant :...
#  ses coordonnées précédentes et les coordonnées du ballon
def absArbitre(absArbitrePrec,ordArbitrePrec,absBal,ordBallonPrec,pas):
    d=distance(absArbitrePrec,ordArbitrePrec,absBal,ordBallonPrec)
    x=(absBal-absArbitrePrec)*pas/d+absArbitrePrec
    return x

#création de la fonction qui permet de trouver l'ordonnée de l'arbitre connaissant :...
#  ses coordonnées précédentes et les coordonnées du ballon
def ordArbitre(absArbitrePrec,ordArbitrePrec,absBal,ordBallonPrec,pas):
    d=distance(absArbitrePrec,ordArbitrePrec,absBal,ordBallonPrec)
    y=(ordBallonPrec-ordArbitrePrec)*pas/d+ordArbitrePrec
    return y

#création des listes de coordonnées de l'arbitre
def coordArbitre(pas,dureeCourse,absBal):
    tabAbsArbitre=[0]
    tabOrdArbitre=[0]
    for i in range (dureeCourse):
        xArb=tabAbsArbitre[i]
        yArb=tabOrdArbitre[i]
        xBal=absBal
        yBal=i*pas
        d=distance(xBal,yBal,xArb,yArb)
        #print("distance :",d)
        xArb,yArb=absArbitre(xArb,yArb,xBal,yBal,pas),ordArbitre(xArb,yArb,xBal,yBal,pas)
        #print("abscisse du point",i+1," est ",xArb)
        #yArb=ordArbitre(xArb,yArb,xBal,yBal,pas)
        #print("ordonnée du point",i+1," est ",yArb)
        tabAbsArbitre.append(xArb)
        tabOrdArbitre.append(yArb)
    return tabAbsArbitre,tabOrdArbitre


#Pour obtenir la réponse à la question 1 :
# Fonction Python qui permet de dessiner la courbe du chien
def Nuage(listeCoordo):
    n=int(len(liste[0]))
    xlim(0, 5.2)
    ylim(0, 20)
    grid(True)
    axis([0, 5.2, 0, 20])
    for i in range(n):
       plot(liste[0][i],liste[1][i],'r.')
    show()

#Pour obtenir la réponse à la question 2 :
#Fonction Python qui permet de mesurer et afficher...
#...la distance entre le maitre et le chien
def evolutionDistance(listeCoordonnees):
    liste=listeCoordonnees
    for i in range(dureeCourse):
        d=distance(liste[0][i],liste[1][i],absBal,i*pas)
        print(d)


#----------------------------------
#Déclaration des variables globales
#----------------------------------

vitesse=1   #la vitesse de l'arbitre et du joueur
dureeCourse=20 #la durée de la course de l'arbitre et du
absBal=5        #Abscisse du ballon
intTemps=1
pas=vitesse*intTemps

#--------------------------------------------------------------------------
#Programme principal
#--------------------------------------------------------------------------

liste=coordArbitre(pas,dureeCourse,absBal)

#Réponse à la question 1
Nuage(liste)

#Réponse à la question 2
evolutionDistance(liste)