Cyril wrote:
>Bonjour,
>
>Question du CAPLP, qui peut m'aider ? Il s'agit de trouver de tangence T1.
>Toutes les données sont sur le plan.
>
>http://perso.wanadoo.fr/14huitmille/images/sujet.pdf
>
>Merci de votre attentionSi on connait les coordonnées du centre D du cercle de rayon r,
et aussi un point C qui est à l'extérieur du cercle quelque part.
Les points de tangence des droites qui passent par C et sont tangents
au cercle sont E et F.
Le segment CE est perpendiculaire au segment ED (c'est la définition
de la tangente). Alors CED est un triangle rectangle en E.
Pour calculer les coordonnées de E faire les calculs suivants:
// Calculer le vecteur CD:
CD.x=D.x-C.x;
CD.y=D.y-C.y;
// et sa longueur
t=sqrt(CD.x*CD.x + CD.y*CD.y);
sinangle=r/t;
cosangle=sqrt(1-sinangle*sinangle);
// Faire une rotation de CD dans le sens anti-horaire
// pour obtenir le vecteur CE
CE.x=CD.x*cosangle - CD.y*sinangle;
CE.y=CD.y*cosangle + CD.x*sinangle;
// et normaliser CE pour en faire un vecteur unitaire
CE.x=CE.x/t;
CE.y=CE.y/t;
// d est la longueur que doit avoir CE
// pour qu'il soit tangent au cercle
d=sqrt(t*t-r*r);
// et finalement calculer le point E
E.x = C.x + CE.x*d;
E.y = C.y + CE.y*d;
// meme chose pour l'autre point tangent F:
// rotation de CD mais dans le sens horaire
CF.x=CD.x*cosangle + CD.y*sinangle;
CF.y=CD.y*cosangle - CD.x*sinangle;
// normaliser CF
CF.x=CF.x/t;
CF.y=CF.y/t;
// et calculer F
F.x = C.x + CF.x*d;
F.y = C.y + CF.y*d;