Segments tangents à deux cercles

Introduction

Cet article traite du calcul des coordonnées des points d’intersection des tangentes à deux cercles. Comme le montre la figure suivante, quatre configurations peuvent exister dans le cas général:

  • R_A et P_A sont respectivement le rayon et le centre du premier cercle.
  • R_B et P_B sont respectivement le rayon et le centre du deuxième cercle.
  • P_1 est le point de contact de la tangente sur le premier cercle.
  • P_2 est le point de contact de la tangente sur le deuxième cercle.

CirclesTangents_001

Mise en équation

Pour commencer, considérons le fait que chaque point appartient au cercle:

\left \{ \begin{array}{r c l}(x_1 - x_A)^2 + (y_1 - y_A)^2 = {R_A}^2 \\(x_2 - x_B)^2 + (y_2 - y_B)^2 = {R_B}^2\end{array} \right .

Considérons maintenant le fait que chaque segment tangent est perpendiculaire au rayon:

\left \{ \begin{array}{r c l}(x_1 - x_2)^2 + (y_1 - y_2)^2 + {R_A}^2 = (x_2 - x_A)^2 + (y_2 - y_A)^2 \\(x_1 - x_2)^2 + (y_1 - y_2)^2 + {R_B}^2 = (x_1 - x_B)^2 + (y_1 - y_B)^2 \end{array} \right .

Il devient alors possible de résoudre ces quatre équations afin de déterminer les quatre inconnues. Malheureusement, le système n’est pas linéaire et la résolution est complexe.

Configuration de Thales

En revanche, nous pouvons tirer avantageusement profit des configurations de Thales qui nous permettent de calculer facilement la longueur \left | P_1 P_2 \right |.

Première configuration

Dans cette configuration, le point U est ajouté sur le rayon C_B de façon à ce que  \left | UP_B \right | = R_B - R_A

First Thales configuration

Le triangle \widehat {P_A U P_B} est rectangle et \left | P_AU \right |^2 + \left | P_BU \right |^2 = \left | P_AP_B \right |^2. En s’appuyant sur ce triangle, nous pouvons déduire que :

\left | P_1P_2 \right | = \sqrt { \left | P_AP_B \right |^2 - (R_A - R_B)^2 }

De l’équation précédente, nous pouvons déduire que la première configuration n’existe que si \left | P_AP_B \right |^2 \ge (R_A - R_B)^2 , c’est à dire si aucun des cercles n’est intégralement inclus dans l’autre.

Deuxième configuration

Dans cette nouvelle configuration, les points A et P_1 sont ajoutés de façon à ce que \left | P_AP_B \right | = \left | MA and \left | P_1P_2 \right | = \left | MP_1. Notez que, d’après Thales : \left | P_1

Second Thales configuraiton

Comme pour la première configuration \widehat {M P_1 est un triangle rectangle.

\left | MP_1
\left | P_1P_2 \right |^2 + (R_A + R_B)^2 = \left | P_AP_B \right |^2

Il devient facile de déduire:

\left | P_1P_2 \right | = \sqrt { \left | P_AP_B \right |^2 - (R_A + R_B)^2 }

De l’équation précédente, nous pouvons déduire que la seconde configuration n’existe que si \left | P_AP_B \right |^2 \ge (R_A + R_B)^2 , c’est à dire aucun des cercles n’est intégralement inclus dans l’autre.

Simplification des équations

Une fois que \left | P_1P_2 \right | est connu, les équations peuvent être reformulées. Considérons L équal à\left | P_1P_2 \right |, les équations deviennent::

\left \{ \begin{array}{ll}(x_1 - x_A)^2 + (y_1 - y_A)^2 = {R_A}^2 \\L^2 + {R_B}^2 = (x_1 - x_B)^2 + (y_1 - y_B)^2 \end{array} \right . \\\left \{ \begin{array}{ll}(x_2 - x_B)^2 + (y_2 - y_B)^2 = {R_B}^2 \\L^2 + {R_A}^2 = (x_2 - x_A)^2 + (y_2 - y_A)^2\end{array} \right .

Nous disposons maintenant de deux systèmes indépendants non linéaires à résoudre, étant donné la symétrie du problème, la résolution d’un système nous permet d’obtenir la solution générale.

Résolution des équations

Comme les systèmes sont équivalents, nous allons nous intéresser au premier:

\left \{ \begin{array}{ll}(x_1 - x_A)^2 + (y_1 - y_A)^2 = {R_A}^2 \\(x_1 - x_B)^2 + (y_1 - y_B)^2 = L^2 + {R_B}^2\end{array} \right .

Il est évident que la solution géométrique est l’intersection de deux cercles de centres P_A et P_B avec des rayons respectifs de R_A et \sqrt{L^2+{R_B}^2}.

Les coordonnées de P_1 sont données par :

\left \{ \begin{array}{ll}x_1= \frac{x_A+x_B}{2} + \frac{(x_B-x_A)({R_A}^2-{R_1}^2)}{2D^2} \pm 2\frac{y_A-y_B}{D^2}\sigma_1  \\y_1= \frac{y_A+y_B}{2} + \frac{(y_B-y_A)({R_A}^2-{R_1}^2)}{2D^2} \pm 2\frac{x_A-x_B}{D^2}\sigma_1 \end{array} \right .

avec

\begin{array}{ll}D = \sqrt{ (x_B-x_A)^2 + (y_B-y_A)^2 } \\L = \sqrt { D^2 - (R_A \pm R_B)^2 } \\R_1= \sqrt{L^2+{R_B}^2} \\\sigma_1=\frac{1}{4}\sqrt{ (D+R_A+R_1)(D+R_A-R_1)(D-R_A+R_1)(-D+R_A+R_1) }\end{array} .

Nous pouvons, de la même façon déterminer les coordonnées de P_2:

\left \{ \begin{array}{ll}x_2= \frac{x_B+x_A}{2} + \frac{(x_A-x_B)({R_B}^2-{R_2}^2)}{2D^2} \pm 2\frac{y_B-y_A}{D^2}\sigma_2  \\y_2= \frac{y_B+y_A}{2} + \frac{(y_A-y_B)({R_B}^2-{R_2}^2)}{2D^2} \pm 2\frac{x_B-x_A}{D^2}\sigma_2 \end{array} \right .

avec

\begin{array}{ll}D = \sqrt{ (x_B-x_A)^2 + (y_B-y_A)^2 } \\L = \sqrt { D^2 - (R_B \pm R_A)^2 } \\R_2= \sqrt{L^2+{R_A}^2} \\\sigma_2=\frac{1}{4}\sqrt{ (D+R_B+R_2)(D+R_B-R_2)(D-R_B+R_2)(-D+R_B+R_2) }\end{array} .

Un test rapide sous Matlab confirme les résultats :

Circles & Tangents

Code source Matlab

2 réflexions au sujet de « Segments tangents à deux cercles »

  1. Les lettres L et D ne sont-elles pas inversées sur le schéma ?
    Dans le triangle PaUPb rectangle en U :
    L est l’hypoténuse d’où :
    L^2 =D^2+(Rb-Ra)^2

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *