Outils pour utilisateurs

Outils du site


nsi:tds:maths:geometrie_analytique

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
nsi:tds:maths:geometrie_analytique [2022/09/30 11:49] – [Triangle] goupillwikinsi:tds:maths:geometrie_analytique [2022/10/04 10:53] (Version actuelle) goupillwiki
Ligne 41: Ligne 41:
  
 Quelques précisions sur les méthodes :\\ //dans ce qui suit ''d1'' et ''d2'' sont des droites, ''A'' un point.// Quelques précisions sur les méthodes :\\ //dans ce qui suit ''d1'' et ''d2'' sont des droites, ''A'' un point.//
-  * ''d1.is_parallel(d2)'' renvoie ''True'' si les deux droites sont parallèles.\\<wrap tip>deux droites sont parallèles si $a\cdot b' = a' \cdot b$</wrap> +  * ''d1.is_parallel(d2)'' renvoie ''True'' si les deux droites sont parallèles.\\ <wrap tip>deux droites sont parallèles si $a\cdot b' = a' \cdot b$</wrap> 
-  * ''d1.perp_by_point(d2, A)'' renvoie la droite perpendiculaire à ''d1'' et passant par ''A''.\\<wrap tip>Une perpendiculaire a les coefficients $a' = -b$ et $b' = a$</wrap>+  * ''d1.perp_by_point(A)'' renvoie la droite perpendiculaire à ''d1'' et passant par ''A''.\\ <wrap tip>Une perpendiculaire a les coefficients $a' = -b$ et $b' = a$</wrap>
   * ''d1.inter(d2)'' renvoie le point intersection des deux droites.\\ //précondition : les deux droites ne sont pas parallèles//\\ <wrap tip>$x = -\frac{c\cdot b' - c'\cdot b}{a\cdot b' - a'\cdot b}$ et $y = -\frac{c\cdot a' - c'\cdot a}{b\cdot a' - b'\cdot a}$</wrap>   * ''d1.inter(d2)'' renvoie le point intersection des deux droites.\\ //précondition : les deux droites ne sont pas parallèles//\\ <wrap tip>$x = -\frac{c\cdot b' - c'\cdot b}{a\cdot b' - a'\cdot b}$ et $y = -\frac{c\cdot a' - c'\cdot a}{b\cdot a' - b'\cdot a}$</wrap>
   * ''d1.has_point(A)'' renvoie ''True'' si le point est sur la droite.\\ <wrap tip>Tester si $a\cdot x_A + b\cdot y_A + c = 0$</wrap>   * ''d1.has_point(A)'' renvoie ''True'' si le point est sur la droite.\\ <wrap tip>Tester si $a\cdot x_A + b\cdot y_A + c = 0$</wrap>
Ligne 49: Ligne 49:
  
 On aimerait disposer d'autres fonctions : On aimerait disposer d'autres fonctions :
-  * une fonction ''par_deux_pts(A:Point, B:Point) -> Droite'' renvoyant droite passant par deux points,\\ <wrap tip>Les coefficients pour la droite $(AB)$ sont $a = y_B - y_A$, $b = -(x_B - x_A)$ et $c = -a\cdot x_A b \cdot y_A$</wrap>+  * une fonction ''par_deux_pts(A:Point, B:Point) -> Droite'' renvoyant droite passant par deux points,\\ <wrap tip>Les coefficients pour la droite $(AB)$ sont $a = y_B - y_A$, $b = -(x_B - x_A)$ et $c = -a\cdot x_A b \cdot y_A$</wrap>
   * une fonction ''mediatrice(A:Point, B:Point) -> Droite'' renvoyant la médiatrice su segment [AB]\\ <wrap tip>C'est la perpendiculaire à (AB) passant par le milieu de [AB]</wrap>   * une fonction ''mediatrice(A:Point, B:Point) -> Droite'' renvoyant la médiatrice su segment [AB]\\ <wrap tip>C'est la perpendiculaire à (AB) passant par le milieu de [AB]</wrap>
  
-Mais où placer ces deux fonctions ?+== Mais où placer ces deux fonctions ? ==
   * si on les place dans ''Point'', l'objet ''Point'' devient dépendant de ''Droite'' ce qu'on préférait éviter,   * si on les place dans ''Point'', l'objet ''Point'' devient dépendant de ''Droite'' ce qu'on préférait éviter,
   * on ne peut les placer dans la classe ''Droite'' car les méthodes de ''Droite'' concernent toujours une droite qui existe déjà. Mais ces deux fonctions servent à créer une droite (qui n'existe donc pas encore) à partir d'autre chose qu'une droite... D'ailleurs, vous voyez qu'il n'y a pas ''self'' dans la définition de ces fonctions.   * on ne peut les placer dans la classe ''Droite'' car les méthodes de ''Droite'' concernent toujours une droite qui existe déjà. Mais ces deux fonctions servent à créer une droite (qui n'existe donc pas encore) à partir d'autre chose qu'une droite... D'ailleurs, vous voyez qu'il n'y a pas ''self'' dans la définition de ces fonctions.
 +  * on peut créer une classe ''Segment''. Un objet de cette classe serait défini par deux points. La fonction ''mediatrice'' serait une méthode d'un objet ''Segment''. Cette approche est rigoureuse et logique : en mathématique, la médiatrice appartient à un segment, pas à un point ou une droite. Il est donc naturel de donner à ''Segment'' la responsabilité de la médiatrice. Le seul défaut de cette approche est d'obliger à créer une classe en plus.
   * on peut les placer dans le module ''droite.py'' comme fonctions ordinaires, à côté de la classe ''Droite''. C'est une bonne option. Son seul tort est de ne pas tout empaqueter dans la classe, ce qu'on préfère quand on commence à faire des classes.   * on peut les placer dans le module ''droite.py'' comme fonctions ordinaires, à côté de la classe ''Droite''. C'est une bonne option. Son seul tort est de ne pas tout empaqueter dans la classe, ce qu'on préfère quand on commence à faire des classes.
   * plus technique, on peut placer ces fonctions dans la classe ''Droite'' mais en signalant qu'elles fonctionnent autrement. On pourra écrire :   * plus technique, on peut placer ces fonctions dans la classe ''Droite'' mais en signalant qu'elles fonctionnent autrement. On pourra écrire :
Ligne 80: Ligne 81:
 Vous remarquez également qu'on appelle la fonction en précisant le nom de la classe : ''%%Droite.par_deux_points(A, B)%%''. Cela montre que la fonction est //rangée// dans ''Droite''. C'est un des aspects des classes qu'on apprécie : tout est bien rangé. Vous remarquez également qu'on appelle la fonction en précisant le nom de la classe : ''%%Droite.par_deux_points(A, B)%%''. Cela montre que la fonction est //rangée// dans ''Droite''. C'est un des aspects des classes qu'on apprécie : tout est bien rangé.
 </WRAP>     </WRAP>    
- 
-===== Segment ? ===== 
- 
-<WRAP tip> 
-Je n'avais pas pensé à cette classe dans un premier temps. On peut juger cela plus rigoureux mais n'a rien d'obligatoire. 
- 
-Avec une classe ''Segment'', on n'aura plus à se demander où mettre la fonction ''mediatrice'', ce sera clairement : dans la classe ''Segment''. 
-</WRAP> 
- 
-Si vous choisissez d'implémenter la classe ''Segment'', elle devra contenir les méthodes : 
-  * ''milieu'' 
-  * ''longueur'' 
-  * ''mediatrice''. Cette fonction ne serait alors plus dans la classe ''Droite'' 
  
 ===== Triangle ===== ===== Triangle =====
nsi/tds/maths/geometrie_analytique.1664531341.txt.gz · Dernière modification : de goupillwiki