Comment calculer les points d'intersection de deux cercles ?

Points d'intersection de deux cercles

L'objet de cette page est de calculer les coordonnées des points d'intersection de deux cercles \( C_1 \) et \( C_2 \).

Voici nos hypothèses :

L'objectif mathématique est de calculer les coordonnées des points d'intersection \( P_3 \) et \( P_4 \) en fonction de \( P_1 \) , \( P_2 \) , \( r_1 \) et \( r_2 \).

Étapes intermédiaires

Étapes intermédiaires pour le calcul de l'intersection de deux cercles

Voici le étapes intermédiaires utilisées pour la démonstration:

  1. Calcul de la distance \( d \) entre les deux centres
  2. Analyse des différents cas
  3. Calcul des longueurs \( a \) et \( b \)
  4. Calcul de h
  5. Calcul des coordonnées de \( P_5 \)
  6. Calcul des vecteurs \( \overrightarrow{P_5P_3} \) et \( \overrightarrow{P_5P_4} \)
  7. Calcul des coordonnées de \( P_3 \) et \( P_4 \)

Distance entre les centres

Commençons par calculer la distance entre les centres des deux cercles \( d \). Grâce au théorème de Pythagore nous pouvons écrire :

$$ d = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2 } \label{eq:d} $$

Analyse des cas

Selon la valeur de \( d \), nous avons 5 cas différents :

\( d > r_1 + r_2 \) \( d < \lvert r_1 - r_2 \rvert \)
Les cercles sont trop éloigné et ne se croisent pas un cercle est à l’intérieur de l'autre, pas d'intersection
\( d = 0 \) et \( r_1 = r_2 \) \( d = r_1 + r_2 \)
Les cercles dont confondes, il y a une infinité de points d'intersection) Il n'y a qu'un seul point d'intersection entre les cercles
\( d = r_1 - r_2 \) ou \( d = r_2 - r_1 \) \( d < r_1 + r_2 \)
Il n'y a qu'un seul point d'intersection entre les cercles qui sont l'un à l'interieur de l'autre Il y a deux points d'intersection en tre les cercles

Calcul de a et b

Pour calculer la distance \(a\) commençons par exprimer \( h \) en fonction de \( a \) et \( b \) . Dans le triangle rectangle \( P_1 P_5 P_3 \) le théorème de Pythagore nous donne :

$$ r_1^2 = h^2 + a^2 \label{eq:h1} $$

De la même façon, nous pouvons appliquer le théorème dans le triangle rectangle \( P_2 P_5 P_3 \):

$$ r_2^2 = h^2 + b^2 \label{eq:h2} $$

En substituant l'équation \eqref{eq:h2} à l'équation \eqref{eq:h1} nous obtenons la relation suivante:

$$ r_1^2 - r_2^2 = a^2 - b^2 \label{eq:ab} $$

Comme \( d = a +b \), nous pouvons écrire le système d'équation suivant :

$$ \left\{ \begin{split} & r_1^2 - r_2^2 = a^2 - b^2 \\ & d = a +b \end{split} \right. $$

En injextant \( b = d-a \) dans l'équation \eqref{eq:ab}, nous obtenons la relation suivante :

$$ r_1^2 - r_2^2 = a^2 - (d-a)^2 $$

Lse termes \( –a^2 \) de chaque côté s'annulent. Nous pouvons résoudre le système pour \( a \):

$$ \begin{split} r_1^2 - r_2^2 &= a^2 - d^2 - a^2 + 2ad \\ r_1^2 - r_2^2 &= - d^2 + 2ad \\ 2ad & = r_1^2 - r_2^2 + d^2 \end{split}$$

Nous obtenons :

$$ a = \dfrac{r_1^2 - r_2^2 + d^2 }{2d} $$

De la même façon dans le triangle \( P_2 P_5 P_3 \) :

$$ b = \dfrac{r_2^2 - r_1^2 + d^2 }{2d} $$

Toutes les valeurs sont connues:

Calcul de h

Une fois \( a \) et \( b\) connnus, il devient facile de calculer la longueur \( h \) en appliquant le théorème de Pythagor dans le triangle rectangle \( P_1 P_5 P_3 \)

$$ r_1^2 = h^2 + a^2 $$

$$ h = \sqrt{ r_1^2 - a^2 }$$

Coordonnées de P5

L'étape suivante consiste à calculer les coordonnées de \( P_5 \).

Calcul des coordonnées de P5

Comme les vecteurs \( \overrightarrow{P_1P_5} \) et \( \overrightarrow{P_1P_2} \) sont colinéaires, nous pouvons écrire :

$$ \overrightarrow{P_1P_5} = \dfrac{a}{d} \times \overrightarrow{P_1P_2} $$

Nous pouvons en déduire les coorodnnées de \( P_5 \) :

$$ \begin{split} x_5 &= x_1 + \dfrac{a}{d} \times (x_2 - x_1) \\ y_5 &= y_1 + \dfrac{a}{d} \times (y_2 - y_1) \end{split} $$

Vecteurs P5P3 et P5P4

L'avant dernière étape est le calcul des vecteurs \( \overrightarrow{P_5P_3} \) et \( \overrightarrow{P_5P_4} \) . Considérons le vecteur \( \overrightarrow{P_1P_2} \) donné par la relation suivante :

$$ \overrightarrow{P_1P_2} = \begin{pmatrix} x_2 - x_1 \\ y_2 - y_1 \end{pmatrix} $$

En multipliant ce vecteur par une matrice de rotation autour de l'axe Z, nous pouvons calculer les vecteurs perpendiculaires :

Sens horaire

$$ \overrightarrow{P_1P_2}^{\bot \circlearrowright} = \begin{pmatrix} 0 && 1 \\ -1 && 0 \end{pmatrix} \times \begin{pmatrix} x_2 - x_1 \\ y_2 - y_1 \end{pmatrix} = \begin{pmatrix} y_2 - y_1 \\ x_1 - x_2 \end{pmatrix} $$

Send trigonométrique

$$ \overrightarrow{P_1P_2}\ {}^{\bot \circlearrowleft} = \begin{pmatrix} 0 && -1 \\ 1 && 0 \end{pmatrix} \times \begin{pmatrix} x_2 - x_1 \\ y_2 - y_1 \end{pmatrix} = \begin{pmatrix} y_1 - y_2 \\ x_2 - x_1 \end{pmatrix} $$

Nous avons déja calculé la norme des vecteurs \( \lVert \overrightarrow{P_1P_2} \rVert = d \) et \( \lVert \overrightarrow{P_5P_3} \rVert = \lVert \overrightarrow{P_5P_4} \rVert = h \).

En appliquant le ratio \( \dfrac{h}{d} \) au vecteur \( \overrightarrow{P_1P_2}^{\bot} \) nous pouvons en déduire l'expression des vecteurs \( \overrightarrow{P_5P_3}^{\bot} \) et \( \overrightarrow{P_5P_4}^{\bot} \):

$$ \overrightarrow{P_5P_3}^{\bot} = \dfrac{h}{d} \times \overrightarrow{P_1P_2}^{\bot \circlearrowleft} =\begin{pmatrix} \dfrac{h(y_2 - y_1)}{d} \\ \dfrac{h(x_1 - x_2)}{d} \end{pmatrix} $$

$$ \overrightarrow{P_5P_4}^{\bot} = \dfrac{h}{d} \times \overrightarrow{P_1P_2}^{\bot \circlearrowright} =\begin{pmatrix} \dfrac{h(y_1 - y_2)}{d} \\ \dfrac{h(x_2 - x_1)}{d} \end{pmatrix} $$

Points d'intersection

Lorsque les vecteurs \( \overrightarrow{P_5P_3} \) et \( \overrightarrow{P_5P_4} \) sont calculés, les coordonnées de \(P_3\) et \(P_4\) peuvent être déduites en translatant le point \( P_3\) par ce vecteur. Nous obtenons finalement :

$$ P_3 =\begin{pmatrix} x_5 - \dfrac{h(y_2 - y_1)}{d} \\ y_5 + \dfrac{h(x_2 - x_1)}{d} \end{pmatrix} $$

et

$$ P_4 =\begin{pmatrix} x_5 + \dfrac{h(y_2 - y_1)}{d} \\ y_5 - \dfrac{h(x_2 - x_1)}{d} \end{pmatrix} $$

Nous pouvons réécrire ces deux relations en une :

$$ \begin{split} x &=& x_5 ~\pm~ \dfrac{h(y_2 - y_1)}{d} \\ y &=& y_5 ~\pm~ \dfrac{h(x_2 - x_1)}{d} \end{split} $$

Téléchargement

Voici le script Matlab utilisé pour vérifié les résultats de cette page :

circle_circle_intersection.m

Confirmation avec Matlab du calcul des coordonnées des points d'intersection de deux cercles

Voir aussi


Dernière mise à jour : 16/11/2023