Droite par deux points, alignement et algorithme
Énoncé
Soit A(-1 ; 3), B(2 ; -3) et C(4 ; -7).
a) Déterminer une équation cartésienne de la droite (AB).
b) En déduire que les points A, B et C sont alignés. Le vérifier avec le déterminant de AB⃗ et AC⃗.
c) On considère l'algorithme suivant, écrit en langage naturel :
```
a ← yB − yA
b ← xA − xB
c ← −(a × xA + b × yA)
afficher a, b, c
```
Le faire fonctionner avec les points A et B. Que représentent les trois nombres affichés ?
d) La fonction Python suivante doit renvoyer `True` exactement quand les trois points sont alignés. Par quoi faut-il remplacer les points de suspension ?
```python
def alignes(xA, yA, xB, yB, xC, yC):
d = (xB - xA) * (yC - yA) - ...
return d == 0
```
Indice : Avec le vecteur directeur AB⃗ : M ∈ (AB) ⟺ det(AM⃗, AB⃗) = 0.
Correction
- Étape 1 : Deux points distincts donnent un vecteur directeur, AB⃗ : on est ramené à « un point et un vecteur directeur ».
Trois points alignés : deux tests équivalents :
par l'équation : on détermine une équation de (AB), puis on teste si C la vérifie ;
par le déterminant : A, B, C alignés ⟺ det(AB⃗, AC⃗) = 0.
👉 Un algorithme ne fait rien d'autre que ces calculs : la question c) en fait fonctionner un à la main, la question d) en complète un autre.
- Étape 2 : a) AB⃗(2 - (-1) ; -3 - 3) = (3 ; -6). Pour M(x ; y), AM⃗(x + 1 ; y - 3) :
det(AM⃗, AB⃗) = (x + 1) × (-6) - 3 × (y - 3) = -6x - 6 - 3y + 9 = -6x - 3y + 3
Une équation est -6x - 3y + 3 = 0 ; en divisant par -3 :
(AB) : 2x + y - 1 = 0
Contrôle : A : -2 + 3 - 1 = 0 ; B : 4 - 3 - 1 = 0.
(AB) : 2x + y - 1 = 0
- Étape 3 : b) On teste C(4 ; -7) : 2 × 4 + (-7) - 1 = 8 - 7 - 1 = 0. C est sur la droite (AB) : les trois points sont alignés.
Vérification par le déterminant : AC⃗(4 - (-1) ; -7 - 3) = (5 ; -10), et
det(AB⃗, AC⃗) = 3 × (-10) - 5 × (-6) = -30 + 30 = 0
Les deux méthodes concordent.
det(AB⃗, AC⃗) = 0
- Étape 4 : c) On remplace : xA = -1, yA = 3, xB = 2, yB = -3.
a ← -3 - 3 = -6
b ← -1 - 2 = -3
c ← -((-6) × (-1) + (-3) × 3) = -(6 - 9) = 3
L'algorithme affiche -6, -3, 3 : ce sont les coefficients d'une équation cartésienne de (AB), -6x - 3y + 3 = 0 — exactement celle trouvée en a) avant la division par -3.
👉 Pourquoi : (a ; b) = (yB - yA ; xA - xB) est choisi pour que (-b ; a) = AB⃗ soit un vecteur directeur, et c est calculé pour que A vérifie l'équation.
-6x - 3y + 3 = 0
- Étape 5 : d) La fonction doit calculer le déterminant de AB⃗(xB - xA ; yB - yA) et AC⃗(xC - xA ; yC - yA) :
d = (xB - xA)(yC - yA) - (xC - xA)(yB - yA)
Le premier produit en croix est déjà écrit : il manque le second, que l'on soustrait. On remplace donc les points de suspension par « (xC - xA) * (yB - yA) ».
Avec les points de l'énoncé, d = 3 × (-10) - 5 × (-6) = 0, et la fonction renvoie « True » : les points sont alignés, comme en b).
ℹ️ Le test « d == 0 » est sûr avec des coordonnées entières. Avec des décimaux, les calculs en flottants peuvent laisser un résultat très proche de 0 sans être nul : on teste alors « abs(d) < 1e-9 ».
- Étape 6 : L'erreur classique :
Calculer le déterminant « ligne à ligne » : x × x' - y × y', ici 3 × 5 - (-6) × (-10) = 15 - 60 = -45, et conclure à tort que les points ne sont pas alignés.
Le déterminant croise : l'abscisse du premier vecteur avec l'ordonnée du second, moins l'abscisse du second avec l'ordonnée du premier.
À retenir :
Droite par deux points : vecteur directeur AB⃗, puis det(AM⃗, AB⃗) = 0.
👉 Alignement : det(AB⃗, AC⃗) = 0 — un calcul assez simple pour être confié à une machine.