8.5. TP Manipulation de triangles en 2D#
nécessite la validation du notebook ClassPoint (classe Point)
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
# 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_))
# recharge les modules
%load_ext autoreload
%autoreload 2
8.5.1. Objectif#
On se propose d’écrire une classe Python pour manipuler des triangles en 2D, en utilisant la classe Point précédente.
Nous allons utiliser l’éditeur de texte et l’interpréteur IPython de JupyterLab
8.5.2. Classe Triangle en 2D#
8.5.2.1. Canvas de la classe Triangle#
Compléter la classe Triangle qui dans l’espace cartésien en 2D permet de définir un triangle à partir de 3 points.
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 Triangle.py exok func
S=['exo510', 'exo511', 'exo512', 'exo513', 'exo514','exo515','exo516', 'exo517', 'exo518','exo519']
Func=['']
Exos=liste_functions(S,_uid_)
Meth=['_eq_','barycentre','perimetre','coordbary','inside','translation','rotation','rayon','intersection','surface']
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.5.3. classe Triangle#
cat Triangle.py
%autoreload 2
# test classe
from Point import Point
from Triangle import *
P1=Point(0,0)
P2=Point(1,0)
P3=Point(0,1)
P4=Point(1,1)
T1=Triangle(P1,P2,P3)
print(T1)
8.5.4. test égalité de 2 triangles (méthode eq )#
8.5.4.1. vérification#
%autoreload 2
from Triangle import *
## BEGIN SOLUTION
## END SOLUTION
8.5.4.2. test de validation#
# ne pas modifier
## BEGIN HIDDEN TESTS
exo = "exo510"
assert(check_function(Triangle,exo,Point))
## END HIDDEN TESTS
8.5.5. calcul du barycentre (methode barycentre)#
8.5.5.1. vérification#
%autoreload 2
from Triangle import *
## BEGIN SOLUTION
## END SOLUTION
8.5.5.2. test de validation#
# ne pas modifier
## BEGIN HIDDEN TESTS
exo = "exo511"
assert(check_function(Triangle,exo,Point))
## END HIDDEN TESTS
8.5.6. calcul du perimetre (methode perimetre)#
8.5.6.1. vérification#
%autoreload 2
from Triangle import *
## BEGIN SOLUTION
## END SOLUTION
8.5.6.2. Test de validation#
# ne pas modifier
## BEGIN HIDDEN TESTS
exo = "exo512"
assert(check_function(Triangle,exo,Point))
## END HIDDEN TESTS
8.5.7. calcul de la surface (methode surface)#
8.5.7.1. vérification#
%autoreload 2
from Triangle import *
## BEGIN SOLUTION
## END SOLUTION
8.5.7.2. test de validation#
# ne pas modifier
## BEGIN HIDDEN TESTS
exo = "exo519"
assert(check_function(Triangle,exo,Point))
## END HIDDEN TESTS
8.5.8. calcul des coordonnees barycentre d’un point P (methode coordbary)#
8.5.8.1. vérification#
%autoreload 2
from Triangle import *
## BEGIN SOLUTION
## END SOLUTION
8.5.8.2. test de validation#
# ne pas modifier
## BEGIN HIDDEN TESTS
exo = "exo513"
assert(check_function(Triangle,exo,Point))
## END HIDDEN TESTS
8.5.9. test si un point est dans le triangle (inside)#
8.5.9.1. vérification#
%autoreload 2
from Triangle import *
## BEGIN SOLUTION
## END SOLUTION
8.5.9.2. test de validation#
# ne pas modifier
## BEGIN HIDDEN TESTS
exo = "exo514"
assert(check_function(Triangle,exo,Point))
## END HIDDEN TESTS
8.5.10. translation d’un triangle (translation)#
8.5.10.1. vérification#
%autoreload 2
from Triangle import *
## BEGIN SOLUTION
## END SOLUTION
8.5.10.2. test de validation#
# ne pas modifier
## BEGIN HIDDEN TESTS
exo = "exo515"
assert(check_function(Triangle,exo,Point))
## END HIDDEN TESTS
8.5.11. rotation d’un triangle (rotation)#
8.5.11.1. vérification#
%autoreload 2
from Triangle import *
## BEGIN SOLUTION
## END SOLUTION
8.5.11.2. test de validation#
# ne pas modifier
## BEGIN HIDDEN TESTS
exo = "exo516"
assert(check_function(Triangle,exo,Point))
## END HIDDEN TESTS
8.5.12. rayon du triangle (methode rayon)#
calculer le rayon du plus petit cercle contenant le triangle et centré au barycentre de celui-ci. (attention ce n’est pas le cercle circonscrit)
8.5.12.1. vérification#
%autoreload 2
from Triangle import *
## BEGIN SOLUTION
## END SOLUTION
8.5.12.2. test de validation#
# ne pas modifier
## BEGIN HIDDEN TESTS
exo = "exo517"
assert(check_function(Triangle,exo,Point))
## END HIDDEN TESTS
8.5.13. test intersection avec un triangle (methode intersection)#
dificile: test si le triangle a une intersction non nulle avec un autre triangle. On utilisera en particulier la méthode rayon (pour éliminer des cas) et la méthode coordbary.
8.5.13.1. vérification#
%autoreload 2
from Triangle import *
## BEGIN SOLUTION
## END SOLUTION
8.5.13.2. test de validation#
# ne pas modifier
## BEGIN HIDDEN TESTS
exo = "exo518"
assert(check_function(Triangle,exo,Point))
## END HIDDEN TESTS
8.5.14. tracer de triangle#
tracer 2 triangles sur une figure
%autoreload 2
from Triangle import *
## BEGIN SOLUTION
## END SOLUTION
8.5.15. FIN#