07 May

Intersection de deux cercles

Publié par Nain0nain ,

Intersection de deux cercles

Comment calculer les points d'intersection de deux cercles : Ça sert principalement à faire de la triangulation, mais ça peut servir aussi à placer correctement les points d'un triangle juste en connaissant ses longueurs (utile pour des programmes), pour ça il y des équations plus simples, si les deux cercles sont sur un même axe (demo avec y) : Équations simplifiées. Ici on généralise le cas, et donc les équations sont plus complexes. Pour ceux qui veulent juste savoir comment on calcul les points et pas la démo : #Solution

Voilà le schéma, très important pour tout comprendre

Voilà le schéma, très important pour tout comprendre

c1 et c2 sont deux cercles : il faut connaître b (le rayon de C1) et c (le rayon de C2) et Oc1 et Oc2 sont leur milieux respectifs (en couleur sur le schéma). On cherche les coordonnées de I(intersection), c'est à dire I(XI; YI).

 

 

Demo :

 

Ici on va démontrer qu'il y a deux points d'intersection et en plus ils sont calculables !

 

Il faut savoir que pour calculer une longueur dans un repère orthonormé, on peut utiliser l'équation (avec nos lettres, c'est du Pythagore) :

 

 

 

 

Et donc définir b.

Pour définir c'est la même équation que pour b, mais avec les points qui appartiennent à :

 

 

 

 

Ici on connait toutes les variables sauf XI et YI, que l'on cherche, ça tombe bien car il y a deux équation et deux inconnues. Voici le système :

 

 

 

 

Maintenant on va tout simplement chercher YI en faisant 1 - 2 :

 


 

 

Et on va simplifier pour ensuite exprimer tout ça en fonction de YI :

 

Calcul:

 

 

 

  • On casse les parenthèses - ((XOc2 - XI)2 + (YOc2 - YI)2).

 

 

  • Ici on dévéloppe tout les carrés.
 

 

  • On casse toutes les paranthèses sans oublier de changer de signe !

 

 

  • On enlève les deux doublons : XI2 - XI2 et YI- YI2

 

 

  • On factorise : - 2XOc1 * XI + 2XOc2 * XI  Et  - 2YOc1 * YI + 2YOc2 * Y

 

 

  • On change b2, cet Y* (YOc2 - YOc1) de côté sans oublier les signes.

 

 

  • On divise par (YOc2 - YOc1) pour isoler YI

 

 

Et donc : 

 

 

 

 

On va isoler X

 

 

 

 

Et comme toute les autres valeurs on les connait, on peut déclarer que :

 

 

 

 

 

 

Cela permet de simplifer les équations prochaînes car :

 

 

 

 

Et donc on a enfin YI en fonction de Xque l'on peut dès maintenant calculer grâce à 1 ou 2. Je vais prendre 1, la simplifier, et ensuite remplacer YI par ce qu'on vient de calculer :

 

Calcul:

 

 

  • On développe les deux carrés et on casse les deux parenthèses

 

  • On remplace YI par ce qu'on vient de calculer

 

  • On developpe juste le carré : (a - XI * d)2 et on developpe -2YOc1 * (a - XI * d)

 

  • On factorise pour avoir les degrés de XI distinct

 

  • On passe b2 de l'autre côté (le égal je l'ai passé aussi à gauche pour faire joli)

 

 

Et on obtient donc une équation du second degré de la forme Ax2 + Bx + C = 0 :

 

 

On résoud donc le tout avec A, B et C que l'on connait: 

 

 

 

 

 

 

et donc on remplace XI par nos valeurs: 

 

 

 

 

Il y a donc deux points possibles pour XI et par conséquent deux pour YI

 

CQFD

f- (a - xC)2 =  yC2

 

Solution : 

 

Ici il vous faut donc b le rayon du premier cercle, c le rayon du deuxième, Oc1 les cordonnées du centre du premier cercle et Oc2 les cordonnées du centre du deuxième cercle :

 

Soit : 

 

 

Soit : 

 

 

Alors :

 

 

 

 

donc :

 

 

donc :

 

Sur ce portez vous bien !

Nain0nain

Nain0nain

Commenter cet article

Boyer 28/06/2017 10:19

Cette démonstration n'est valide que pour YOc2 différent de 0 ou YOc1 différent de 0. Que devient-elle lorsque YOc2 = YOc1 = 0 (Cercles alignés sur l'axe x)?

rAthur 06/07/2017 16:07

Je n'ai pas du tout creusé la question, mais une première solution, même si pas très propre, pourrait être de coder une exception (si le langage le permet) qui, si YOc2 = YOc1 = 0, fait le calcul avec YOc2 = YOc1 = 1, puis qui soustrait 1 aux Y des résultats.

rAthus 20/04/2017 16:30

Merci pour cet article très complet et détaillé, je l'ai utilisé pour créer une fonction JavaScript de calcul des points d'intersections de deux cercles selon les coordonnées de leurs centres et leurs rayons : https://pastebin.com/5hT3G3V8

Marry 17/03/2017 12:24

Informative post I really liked it

bb 20/02/2017 00:56

Il me semble que :

i) Dans l'expression pour a, et qu'il faut mettre un 2 au dénominateur, et un signe (-) devant (X0c1)^2
ii) Dans l'expression pour d, il n'y a pas de facteur 2 au numérateur.

Cordialement,
bb

Nain0nain 20/02/2017 11:20

Hé bien merci beaucoup, effectivement j'ai parcouru les calculs, et il se trouvait que j'avais bien oublié un signe, et un facteur 2 quelque part !

Merci

pierre 30/05/2016 14:14

Super.
Mais j'ai noté quelques petites coquilles entre la solution et le détail des calculs (A=d+1 au lieu de 1=d^2+1 ... ), idem, b est le rayon du cercle 1 mais sur le schéma c'est celui du cercle 2.
Pour chipoter, quelle est la solution si les deux cercles ont la même coordonnée Y?

Nain0nain 07/06/2016 19:02

Merci beaucoup j'ai corrigé les erreurs ! Voilà pour les solutions si les cercles ont la même cordonnée y : http://nains-games.over-blog.com/2016/05/intersection-de-deux-cercles-simplifie-equation-de-soulgaal.html

Suivez nous sur :