8.4. TP Manipulation de points en 2D#

vous devez écrire les fonctions dont le nom est fixé, mais dont vous devez spécifier les arguments en fonction de la question posée.

Attention: exécuter toutes les cellules depuis le début en utilisant le bouton run

%matplotlib inline
import os,sys
import numpy as np
import matplotlib.pyplot as plt
from validation.validation import check_function,liste_functions,info_function,info_etudiant
from IPython.display import Markdown, display
def printmd(string):
    display(Markdown(string))
# test si numero étudiant spécifier
try: NUMERO_ETUDIANT
except NameError: NUMERO_ETUDIANT = None 
if type(NUMERO_ETUDIANT) is not int :
    printmd("**ERREUR:** numéro d'étudiant non spécifié!!!")
    NOM,PRENOM,NUMERO_ETUDIANT = info_etudiant()
    #raise AssertionError("NUMERO_ETUDIANT non défini")
# parametres spécifiques
_uid_    = NUMERO_ETUDIANT
_precis_ = 1.0e-5
printmd("**Login étudiant {} {} uid={}**".format(NOM,PRENOM,_uid_))
np.random.seed(_uid_)
Xpts = 4*np.random.rand(4)-2.
Ypts = 4*np.random.rand(4)-2.
# recharge les modules dans chaque cellule
%load_ext autoreload
%autoreload 2

8.4.1. Objectif#

On se propose d’écrire une classe Python pour manipuler des points en 2D.

Nous allons utiliser l’éditeur de texte et l’interpréteur IPython de JupyterLab

8.4.2. Classe Point en 2D#

8.4.2.1. Canvas de la classe Point#

Compléter la classe de base Point qui dans l’espace cartésion en 2D permet de définir des points par leurs coordonnées (X,Y).

Écrire la classe et les méthodes dans le fichier Point.py

Vous devez implémenter les méthodes définies dans cette classe et les valider soit dans le notebook soit en utilisant la commande test_exo pour valider la fonction func (correspondant au text exok)

     test_exo Point.py exok func 
S=['exo500', 'exo501', 'exo502', 'exo503', 'exo504','exo505','exo506', 'exo507', 'exo508']
Func=['']
Exos=liste_functions(S,_uid_)
Meth=['_eq_','rayon','angle','distance','rotation','translation','polaire','distance','produit_vect']
printmd("**Fonctions à valider**")
print("nbre de fonctions= ",len(Exos))
print(Exos)
print("fonctions/methodes à écrire")
print(Meth)
printmd("**Fonctions à valider**")
# definition des fonctions
for k in range(len(Exos)):
    print("Exercise {} fonction à écrire: {}".format(Exos[k],Meth[k]))
    info_function(Exos[k])

8.4.3. Bibliothèque Point.py#

cat Point.py

8.4.4. fonction distance pour calculer la distance entre 2 points#

8.4.4.1. Vérification#

%autoreload 2
from Point import *
## BEGIN SOLUTION
## END SOLUTION

8.4.4.2. test de validation#

# ne pas modifier
## BEGIN HIDDEN TESTS
exo = "exo507"
assert(check_function(Point,exo,arg_exo=distance))
## END HIDDEN TESTS

8.4.5. fonction produit_vect pour calculer le produit scalaire de 3 points#

8.4.5.1. Vérification#

%autoreload 2
from Point import *
## BEGIN SOLUTION
## END SOLUTION

8.4.5.2. test validation#

# ne pas modifier
## BEGIN HIDDEN TESTS
exo = "exo508"
assert(check_function(Point,exo,arg_exo=produit_vect))
## END HIDDEN TESTS

8.4.6. test égalité de 2 points (méthode eq )#

8.4.6.1. vérification#

%autoreload 2
from Point import *
## BEGIN SOLUTION
## END SOLUTION

8.4.6.2. test de validation#

# ne pas modifier
## BEGIN HIDDEN TESTS
exo = "exo500"
assert(check_function(Point,exo))
## END HIDDEN TESTS

8.4.7. calcul du rayon d’un point / origine (methode rayon)#

8.4.7.1. vérification#

%autoreload 2
from Point import *
## BEGIN SOLUTION
## END SOLUTION

8.4.7.2. test de validation#

# ne pas modifier
## BEGIN HIDDEN TESTS
exo = "exo501"
assert(check_function(Point,exo))
## END HIDDEN TESTS

8.4.8. calcul de l’angle d’un point / origine (methode angle)#

8.4.8.1. vérification#

%autoreload 2
from Point import *
## BEGIN SOLUTION
## END SOLUTION

8.4.8.2. Test de validation#

# ne pas modifier
## BEGIN HIDDEN TESTS
exo = "exo502"
assert(check_function(Point,exo))
## END HIDDEN TESTS

8.4.9. calcul de la distance du point à un autre (methode distance)#

8.4.9.1. vérification#

%autoreload 2
from Point import *
## BEGIN SOLUTION
## END SOLUTION

8.4.9.2. test de validation#

# ne pas modifier
## BEGIN HIDDEN TESTS
exo = "exo503"
assert(check_function(Point,exo))
## END HIDDEN TESTS

8.4.10. rotation d’un point (rotation)#

8.4.10.1. vérification#

%autoreload 2
from Point import *
## BEGIN SOLUTION
## END SOLUTION

8.4.10.2. test de validation#

# ne pas modifier
## BEGIN HIDDEN TESTS
exo = "exo504"
assert(check_function(Point,exo))
## END HIDDEN TESTS

8.4.11. translation d’un point (translation)#

8.4.11.1. vérification#

%autoreload 2
from Point import *
## BEGIN SOLUTION
## END SOLUTION

8.4.11.2. test de validation#

# ne pas modifier
## BEGIN HIDDEN TESTS
exo = "exo505"%autoreload 2
assert(check_function(Point,exo))
## END HIDDEN TESTS

8.4.12. coordonnées polaires d’un point (methode polaire)#

8.4.12.1. vérification#

%autoreload 2
from Point import *
## BEGIN SOLUTION
## END SOLUTION

8.4.12.2. test de validation#

# ne pas modifier
## BEGIN HIDDEN TESTS
exo = "exo506"
assert(check_function(Point,exo))
## END HIDDEN TESTS

8.4.13. Tracer de points#

Tracer les points dont les coordonnees sont données par les 2 tableaux Xpts et Ypts

## BEGIN SOLUTION
## END SOLUTION

8.4.14. FIN#