NSI:TP5, géométrie vectorielle avec des tuples

Le code de la fonction milieu()

def milieu(point1,point2):
  return ((point1[0]+point2[0])/2,(point1[1]+point2[1])/2)

Le code de la fonction vecteur() à compléter :

def vecteur(p1,p2):
    ''' retourne les coordonnées du vecteur d'origine p1 et d'extrémité p2
    return : tuple de longueur 2 (x,y)
    
    >>> vecteur((3,2),(1,-5)
    (-2,-7)
    >>> A=(3,2)
    >>> B=(1,1)
    >>> vect(A,B)
    (-2,-1)
    >>> vect(B,A)
    (2,1)
    '''

Le travail du mini projet sera évalué par groupe à la fin de la séance de TP ou au début de la prochaine séance de TP.
Il sera noté sur 10 points ( 2 points par fonction ).

Code utile pour représenter tous les points définis par des variables du type A=(2,3) pour des abscisses et ordonnées comprises entre -5 et 5.

On pourra regarder le résultat intéressant de la méthode globals().items() en Python ainsi que le rôle de la méthode ord() qui permet de déterminer si un caractère est en majuscule ou en minuscule.

import matplotlib.pyplot as plt
import numpy as np


def recup_variables_globales(): # récupère les variables globales dont le nom est une
    # lettre majuscule et le contenu un tuple de longueur 2
    liste_var=()
    for varname, varval in globals().items():
        if len(varname)==1 and ord(varname[0])>=65 and ord(varname[0])<=90 and type(varval)==tuple and len(varval)==2:
                liste_var=liste_var+(varname,varval)
    return liste_var

def points_a_dessiner(): # fonction qui récupère les variables points définie
    # par une majuscule
    points=recup_variables_globales()
    nom=() # nom des points
    x_pts=() # abscisse correspondante
    y_pts=() # ordonnée correspondant
    for i in range(0,len(points),2):
        nom+=(points[i],)
        x_pts+=(points[i+1][0],)
        y_pts+=(points[i+1][1],)
    return nom,x_pts,y_pts

def dessiner_pts(): # fonctions qui dessine l'ensemble des points
    nom =points_a_dessiner()[0]
    x = points_a_dessiner()[1]
    y = points_a_dessiner()[2]
    plt.scatter(x,y,marker = 'x' )
    plt.title('Mes points')
    axes = plt.gca()
    axes.set_xlim(-6,6)
    plt.xticks(np.arange(-6, 6, 1.0))
    axes.set_ylim(-6,6)
    plt.yticks(np.arange(-6, 6, 1.0))
    axes.xaxis.grid(True, color = 'orange', linewidth = 1, linestyle = 'dashed')
    axes.yaxis.grid(True, color = 'orange', linewidth = 1, linestyle = 'dashed')
    axes.spines['left'].set_position('zero')
    axes.spines['right'].set_color('none')
    axes.spines['bottom'].set_position('zero')
    axes.spines['top'].set_color('none')
    for i in range(len(x)):
        plt.text(x[i]-0.1,y[i]+0.3,nom[i])
    plt.show()