Aller au contenu

TP - Géométrie Repérée

Ce TP s'appuie en grande partie sur les notions de géométrie repérée étudiées en Mathématiques en classe de Seconde. Si vous ne vous en souvenez plus, il est conseillé de relire ce cours puis celui-ci.

Dans le dossier [NSI], créez le dossier [D01-POO].

Téléchargez le fichier « à trous » TPD01.11.py (clic droit -> [Enregistrer sous]) et enregistrez-le dans ce dossier.

Important

  1. Dans chaque fonction à programmer, remplacez le mot-clef pass par les instructions nécessaires.
  2. Pour gagner du temps, on ne lèvera pas les erreurs sur les types de données entrées par l'utilisateur. On considèrera que si la spécification indique un type int, alors ce sera bien un type int qui sera saisi.

Partie 1 - La classe Point

Complétez la définition de la classe Point en respectant les spécifications de chaque méthode. Les attributs de cette classe sont x et y.

Code à compléter
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
class Point:
    """
    Implémentation d'un point en géométrie plane dans un repère orthonormé
    """

    def __init__(self, abscisse=0, ordonnee=0):
        """
        abscisse, ordonnee - int ou float
        Sortie: initialisation d'un objet de type Point
        """
        pass


    def __str__(self):
        """
        Sortie: str - Chaîne de caractères renvoyée lors de l'utilisation de print()
        """
        pass


    def __repr__(self):
        """
        Sortie: str - Chaîne de caractères renvoyée lors de l'appel de l'objet
        """
        pass


    def distance(self, autrePoint):
        """
        self, autrePoint - Point
        Sortie: float - distance entre l'objet et un autrePoint
        """
        pass


    def get_abscisse(self):
        """
        Sortie: int ou float - abscisse de l'objet
        """
        pass


    def get_ordonnee(self):
        """
        Sortie: int ou float - ordonnée de l'objet
        """
        pass


    def set_abscisse(self, valeur):
        """
        Sortie: None - Modifie l'abscisse de l'objet
        """
        pass


    def set_ordonnee(self, valeur):
        """
        Sortie: None - Modifie l'ordonnée de l'objet
        """
        pass


    def translation(self, abscisse, ordonnee):
        """
        abscisse, ordonnee - int ou float
        Sortie: Point - le point d'origine après translation de coordonnées (abscisse, ordonnee)
        """
        pass

Exemples de test

Vérifiez ces exemples puis complétez le programme principal afin que toutes les méthodes de la classe Point soient testées.

>>> p = Point(2, 5)

>>> print(p)
Point d'abscisse 2 et d'ordonnée 5

>>> q = p.translation(7, -2)

>>> q
<Point(9, 3)>

>>> p.distance(q)
7.280109889280518

Partie 2 - La classe Disque

Complétez la définition de la classe Disque en respectant les spécifications de chaque méthode. Les attributs de cette classe sont centre et rayon.
Il faudra lever une erreur (assertion) si le rayon n'est pas positif.

Code à compléter
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
class Disque:
    """
    Implémentation d'un disque en géométrie plane dans un repère orthonormé
    """

    def __init__(self, centre, rayon = 0):
        """
        centre - Point
        rayon - int ou float, nombre positif ou nul
        Sortie: initialisation d'un objet de type Disque
        """
        pass


    def __str__(self):
        """
        Sortie: str - Chaîne de caractères renvoyée lors de l'utilisation de print()
        """
        pass


    def __repr__(self):
        """
        Sortie: str - Chaîne de caractères renvoyée lors de l'appel de l'objet
        """
        pass


    def perimetre(self):
        """
        Sortie: float - perimetre du disque
        """
        pass


    def aire(self):
        """
        Sortie: float - aire du disque
        """
        pass


    def contient(self, point):
        """
        point - Point
        Sortie: bool - True si le disque contient le point,
                False sinon
        """
        pass

Exemples de test

Vérifiez les exemples ci-dessous puis complétez le programme principal afin que toutes les méthodes de la classe Disque soient testées.

>>> d = Disque(p, 3)

>>> d
<Disque(Point d'abscisse 2 et d'ordonnée 5, 3)>

>>> print(d)
Disque de centre le Point d'abscisse 2 et d'ordonnée 5.
Disque de rayon 3.

>>> d.contient(q)
False

Partie 3 - La classe Vecteur

Complétez la définition de la classe Vecteur en respectant les spécifications de chaque méthode. Les attributs de cette classe sont le point d'origine et les coordonnées x et y du vecteur.

Code à compléter
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
class Vecteur:
    """
    Implémentation d'un vecteur en géométrie plane dans un repère orthonormé
    """

    def __init__(self, origine, extremite):
        """
        origine, extremite - Point
        Sortie: initialisation d'un objet de type Vecteur
        """
        pass


    def __str__(self):
        """
        Sortie: str - Chaîne de caractères renvoyée lors de l'utilisation de print()
        """
        pass


    def __repr__(self):
        """
        Sortie: str - Chaîne de caractères renvoyée lors de l'appel de l'objet
        """
        pass


    def norme(self):
        """
        Sortie: float - norme du vecteur
        """
        pass


    def get_abscisse(self):
        """
        Sortie: int ou float - abscisse de l'objet
        """
        pass


    def get_ordonnee(self):
        """
        Sortie: int ou float - ordonnée de l'objet
        """
        pass


    def set_abscisse(self, valeur):
        """
        Sortie: None - Modifie l'abscisse de l'objet
        """
        pass


    def set_ordonnee(self, valeur):
        """
        Sortie: None - Modifie l'ordonnée de l'objet
        """
        pass


    def __eq__(self, autreVecteur):
        """
        Sortie: bool - True si les Vecteurs sont égaux,
                False sinon
        """
        pass


    def __add__(self, autreVecteur):
        """
        Sortie: Vecteur somme
        """
        pass


    def __sub__(self, autreVecteur):
        """
        Sortie: Vecteur difference
        """
        pass


    def __mul__(self, reel):
        """
        reel - int ou float
        Sortie: Vecteur multiplié par reel
        """
        pass


    def clone(self, point):
        """
        point - Point
        Sortie: Vecteur de mêmes coordonnées que l'objet, mais d'origine différente
        """
        pass


    def sont_colineaires(self, autreVecteur):
        """
        self, autreVecteur - Vecteur
        Sortie: bool - True si les deux Vecteurs sont colinéaires,
                False sinon
        """
        pass


    def coef_colinearite(self, autreVecteur):
        """
        self, autreVecteur - Vecteur
        Sortie: float - Coefficient de colinéarité si les deux Vecteurs sont colinéaires,
                None sinon
        """
        pass


    def sont_orthogonaux(self, autreVecteur):
        """
        self, autreVecteur - Vecteur
        Sortie: bool - True si les deux Vecteurs sont orthogonaux,
                False sinon
        """
        pass

Exemples de test

Vérifiez les exemples ci-dessous puis complétez le programme principal afin que toutes les méthodes de la classe Vecteur soient testées.

>>> u = Vecteur(p, q)

>>> u
<Vecteur(Point d'abscisse 2 et d'ordonnée 5, 7, -2)>

>>> print(u)
Vecteur d'origine le Point d'abscisse 2 et d'ordonnée 5.
Vecteur d'abscisse 7 et d'ordonnée -2.