Raccorder un cercle et une demi droite

source : geometry.puzzles "circle + ray" From : green_thumb_wannabe

On veut raccorder un cercle orienté à une demi-droite par un arc de cercle orienté de rayon donné.
En laissant tomber la convention de "rayons négatifs" et en gardant simplement le problème :

Etant donné un cercle (C), centré en C et de rayon rC,
un point R sur ce cercle et une demi-droite (R) isue de R formant un angle Ra avec l'horizontale.
Raccorder le cercle et la demi-droite par un cercle (E) de rayon donné rE de sorte que le chemin passe en partant de (C) dans le sens anti-horaire, puis sur (E) dans le sens horaire, puis en suivant la demi-droite dans sa direction.

Sans les contraintes d'orientation, le problème est facile, et admet au plus 8 solutions. Avec les orientations données, il n'y en a plus qu'une seule.
Le problème est ici de trouver (construire, calculer) directement cette solution, sans avoir besoin de "choisir" parmi les 8.

Considérons le passage au point de contact entre (C) et (E). On change de direction : sens horaire, puis anti-horaire, ceci veut dire simplement que les cercles sont tangents extèrieurement.
Donc le centre E de (E) est sur le cercle (C'), centré en C et de rayon |rC| + |rE|.
Maintenant, au point de contact entre (E) et la demi-droite (R), passer du sens anti-horaire à la direction de la demi-droite veut dire simplement que le cercle (E) est "à gauche" de la demi-droite, en regardant depuis R dans la direction de cette demi-droite.
Le centre E est donc sur une demi-droite parallèle (R'), de même direction que (R), et partant d'un point K avec |RK| = |rE|, et l'angle orienté ((R), RK) = +90°.

D'où la construction, avec des notes sur la façon de procéder avec JavaSketchpad :

Désolé, votre navigateur n'est pas compatible Java

Partons du point C et du rayon rC.
Le point rC est contraint sur une demi-droite horizontale Cx (hidden) comme "Point on object".
Ces deux points déplaçables définissent le cercle (C).
Choisir un point R sur ce cercle ("Point on object" déplaçable)
Un cercle caché et un "Point on object" Ra déplaçable définit la direction de la demi-droite (R) (orientée de R vers Ra).
Sur la demi-droite Cx (hidden), un "Point on object" rE déplaçable définit le rayon rE.
C'est fini pour les données.

La distance C_rE est copiéé en R (VectorTranslation), puis tournée pour être sur la demi-droite (R), puis tournée de +90° de plus pour obtenir le point K.
Une demi droite parallèle à (R) (de même direction donc) est tracée à partir de K (VectorTranslation).
Le cercle (C') de centre C et de rayon |rC| + |rE| est tracé
E est le "2ème" point d'intersection (Intersect2) de la demi-droite issue de K avec ce cercle.
Avec ces orientations, Intersect2 existe toujours, et est le bon :
K est toujours intérieur au cercle (C') car le lieu de K quand R varie est un cercle, translation de (C), dans la direction Ra+90°, de distance |rE|.
Intersect1 est en dehors de la demi-droite (sur son prolongement).

Il est alors aisé de construire les points de contact comme intersection de (R) et d'une perpendiculaire à (R) issue de E
et comme intersection du cercle (C) et du segment CE.
Le cercle (E) est centré en E et passe par le point de contact H

Autres solutions

En ignorant les contraintes d'orientation, si on remplacee "demi-droite" par "droite", on obtient deux solutions.
Puis, avec une rotation donnant K de -90° au lieu de +90° (symétrique de K par rapport à la droite (R)) on obtient deux autres solutions.
Enfin en remplaçant |rC| + |rE| par |rC| - |rE|, on double mle nombre de solutions, pour au total jusqu'à 8 solutions.
Toutes les 8 solutions ne sont possibles que si rE est "suffisamment petit", et qu'il y a "suffisamment de place" entre (R) et (C). Sinon il y a moins de solutions.

Calculs

A partir de cette construction, il n'est pas difficile de calculer directement les coordonnées de E :
Définissons K comme :
xK = xR + rE.cos(Ra + 90°),
yK = yR + rE.sin(Ra + 90°)

Alors la demi-droite issue de K peut être paramètrée comme :
x = xK + t.cos(Ra)
y = yK + t.sin(Ra)
t > 0

L'intersection de cette droite (en résolvant l'équation du second degré en t) avec le cercle x² + y² = (|rC| + |rE|)² donne deux solutions,
La seule qui convient est pour t >0 (sur la demi-droite issue de K) aussi dans l'équation, on choisit simplement + sqrt.

Détails laissés au lecteur...

 

Accueil Arithmétiques Géométrique Divers Thèmes Scripts Jeux Exercices Mail English version Sujet précédent Sujet suivant