11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je cherche à savoir si il existe un moyen, avec Javascript, de calculer les coordonnées du point d'intersection de deux droites qui se coupent obligatoirement.
Je trace les deux droites dans un élément canvas et donc je récupères les cordonnées des 4 points (2x les 2 extrémités de chaque droite).

merci
Modérateur
Bonjour,

On suppose les points de la droite 1 sont (xa1,ya1) et (xb1,yb1), et que les points de la droite 2 sont (xa2,ya2) et (xb2,yb2)
1) tu écris les équations de chaque droite, tu obtiens un système de 2 équations à 2 inconnues :
y=a1 * x + b1 (droite 1, avec a1=(yb1-ya1)/(xb1-xa1) et b1=ya1-a1*xa1
y=a2 * x + b2 (droite 1, avec a2=(yb2-ya2)/(xb2-xa2) et b2=ya2-a2*xa2
2) tu résous ce système de 2 équations à 2 inconnues
a1 * x + b1 - a2 * x + b2 = 0
x = (b2 - b1) / (a1 - a2)
y = a1 *(b2 - b1) / (a1 - a2) + b1
3) tu tiens comptes de cas particuliers quand une droite est verticale pour éviter les divisions par 0 (dans ces cas-là, les équations sont du type x = a et la solution du système de 2 équations à 2 inconnues est simplifié).

Exemple : https://jsfiddle.net/parsimonhi/dhLz8594/

Amicalement,
Meilleure solution
parsimonhi a écrit :
Bonjour,

On suppose les points de la droite 1 sont (xa1,ya1) et (xb1,yb1), et que les points de la droite 2 sont (xa2,ya2) et (xb2,yb2)
1) tu écris les équations de chaque droite, tu obtiens un système de 2 équations à 2 inconnues :
y=a1 * x + b1 (droite 1, avec a1=(yb1-ya1)/(xb1-xa1) et b1=ya1-a1*xa1
y=a2 * x + b2 (droite 1, avec a2=(yb2-ya2)/(xb2-xa2) et b2=ya2-a2*xa2
2) tu résous ce système de 2 équations à 2 inconnues
a1 * x + b1 - a2 * x + b2 = 0
x = (b2 - b1) / (a1 - a2)
y = a1 *(b2 - b1) / (a1 - a2) + b1
3) tu tiens comptes de cas particuliers quand une droite est verticale pour éviter les divisions par 0 (dans ces cas-là, les équations sont du type x = a et la solution du système de 2 équations à 2 inconnues est simplifié).

Exemple : https://jsfiddle.net/parsimonhi/dhLz8594/

Amicalement,


Mais tu es un génie.... tu m'as épargné une prise de tête .. les années de la terminale sont tellement loin, je me rappelle plus de tout ça Smiley cligne
et merci pour ton code fiddle