par SoS-Math(25) » sam. 21 nov. 2020 10:25
Bonjour Marie,
Il y a beaucoup de choses dans le programme de ton amie. Il faut peut-être décortiquer un peu.
Voici un extrait que tu peux tester en ligne :
https://trinket.io/python/22d3245667
La dernière permet simplement d'afficher le résultat de la première fonction c'est à dire les coordonnées du point d'intersection entre un segment (côté gauche ou droit du billard) et une droite y = ax +b avec a et b donnés.
Je te laisse essayer de comprendre cela d'abord en testant d'abord avec des valeurs dans la dernière ligne.
Dans ton énoncé, il faut renvoyer None et pas False s'il n'y a pas de point d'intersection (léger changement).
Code : Tout sélectionner
#!/bin/python3
def detect_horizontale(x1,x2,y0,origine,coef_dir):
"""
Fonction qui detecte si il y a croisement entre un segment horizontal représenté par 2 pts de coordonées
(x1,y0) et (x2,y0) et une droite affine caractérisé par son origine et son coefficient directeur
:param x1: réel, abscisse du point (x1,y0)
:param x2: réel, abscisse du point (x2,y0)
:param y0: réel, hauteur du segment horizontal
:param origine: réel, ordonnée à l'origine de la droite dont on cherche l'intersection avec l'horizontale
:param coef_dir: réel, coefficient directeur de la droite dont on cherche l'intersection avec l'horizontale
:return: bolléen ou tuple, False si pas d'intersection ou si la droite est horizontale,
sinon (cas de l' intersection) renvoie les coordonées de l'intersection
"""
if coef_dir == 0: # protection en cas d'une droite horizontale
return False
if x1 > x2 : #permet de permuter x1 et x2 pour que le segment soit toujours défini de la gauche vers la droite
(x1,x2) = (x2,x1)
x_interse = (y0-origine)/coef_dir
if x_interse < x1 or x_interse > x2 : # si pas d'intersection ie si passe à gauche ou à droite
return None
else: # tout les cas d'intersection
return x_interse, y0
#On affiche les coordonnées du point d'intersection entre le côté droit du billard et une droite y = 4x-20 par exemple :
print(detect_horizontale(0, 200, 150, -20, 4))
Bon courage,
Bonjour Marie,
Il y a beaucoup de choses dans le programme de ton amie. Il faut peut-être décortiquer un peu.
Voici un extrait que tu peux tester en ligne :
[URL_B]https://trinket.io/python/22d3245667[/URL_B]
La dernière permet simplement d'afficher le résultat de la première fonction c'est à dire les coordonnées du point d'intersection entre un segment (côté gauche ou droit du billard) et une droite y = ax +b avec a et b donnés.
Je te laisse essayer de comprendre cela d'abord en testant d'abord avec des valeurs dans la dernière ligne.
Dans ton énoncé, il faut renvoyer None et pas False s'il n'y a pas de point d'intersection (léger changement).
[code]#!/bin/python3
def detect_horizontale(x1,x2,y0,origine,coef_dir):
"""
Fonction qui detecte si il y a croisement entre un segment horizontal représenté par 2 pts de coordonées
(x1,y0) et (x2,y0) et une droite affine caractérisé par son origine et son coefficient directeur
:param x1: réel, abscisse du point (x1,y0)
:param x2: réel, abscisse du point (x2,y0)
:param y0: réel, hauteur du segment horizontal
:param origine: réel, ordonnée à l'origine de la droite dont on cherche l'intersection avec l'horizontale
:param coef_dir: réel, coefficient directeur de la droite dont on cherche l'intersection avec l'horizontale
:return: bolléen ou tuple, False si pas d'intersection ou si la droite est horizontale,
sinon (cas de l' intersection) renvoie les coordonées de l'intersection
"""
if coef_dir == 0: # protection en cas d'une droite horizontale
return False
if x1 > x2 : #permet de permuter x1 et x2 pour que le segment soit toujours défini de la gauche vers la droite
(x1,x2) = (x2,x1)
x_interse = (y0-origine)/coef_dir
if x_interse < x1 or x_interse > x2 : # si pas d'intersection ie si passe à gauche ou à droite
return None
else: # tout les cas d'intersection
return x_interse, y0
#On affiche les coordonnées du point d'intersection entre le côté droit du billard et une droite y = 4x-20 par exemple :
print(detect_horizontale(0, 200, 150, -20, 4))[/code]
Bon courage,