cercles tangents à 3 droites

Utilisation de Xcas

Modérateur : xcasadmin

alb
Messages : 1331
Inscription : ven. août 28, 2009 3:34 pm

cercles tangents à 3 droites

Message par alb » dim. juin 17, 2012 9:19 pm

Le but est de trouver le centre et le rayon d'un des 4 cercles tangents à 3 droites.
Voici d'abord l'exemple numérique qui marche très bien

Code : Tout sélectionner

u:=20;v:=25;a:=14.5;b:=18;c:=9.5;d:=10.5;ee:=4;f:=3;
A:=point(u,a):;B:=point(v,b):;C:=point(u,c):;D:=point(v,d):;E:=point(u,ee):;F:=point(v,f):;
M:=inter_unique(droite(A,B),droite(C,D)):;
N:=inter_unique(droite(A,B),droite(E,F)):;
P:=inter_unique(droite(C,D),droite(E,F)):;
Cercle:=exinscrit(N,P,M):;
Centre:=centre(Cercle):;
rayon(Cercle)
coordonnees(Centre)
On passe ensuite à des coordonnées formelles (sauf u et v):

Code : Tout sélectionner

u:=20;v:=25;
A:=point(u,a):;B:=point(v,b):;C:=point(u,c):;D:=point(v,d):;E:=point(u,ee):;F:=point(v,f):;
M:=inter_unique(droite(A,B),droite(C,D)):;
N:=inter_unique(droite(A,B),droite(E,F)):;
P:=inter_unique(droite(C,D),droite(E,F)):;
Cercle:=exinscrit(N,P,M):;
Centre:=centre(Cercle):;
abscisse(Centre)
ordonnee(Centre)
rayon(Cercle) // le calcul s'éternise, on peut stopper
On ne peut pas obtenir le rayon du cercle.

parisse
Messages : 5882
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: cercles tangents à 3 droites

Message par parisse » lun. juin 18, 2012 3:29 pm

je ne pense pas qu'on puisse y faire grand chose, quand on voit déjà la taille de la formule retournée pour le cercle, on imagine qu'ensuite prendre la norme du diamètre du cercle (le problème c'est le format de stockage des cercles qui utilise un diamètre et pas centre+rayon)...
Bon, en sachant que exinscrit calcule le rayon au préalable et que le cercle est stocké par un diamètre, ici horizontal, on peut sortir une formule horrible en mettant

Code : Tout sélectionner

u:=0; v:=1; // pas la patience avec u:=20 et v:=25 ...
A:=point(u,a):;B:=point(v,b):;C:=point(u,c):;D:=point(v,d):;E:=point(u,ee):;F:=point(v,f):;
M:=inter_unique(droite(A,B),droite(C,D)):;
N:=inter_unique(droite(A,B),droite(E,F)):;
P:=inter_unique(droite(C,D),droite(E,F)):;
diam:=exinscrit(N,P,M)[1,1];
R:=(diam[1]-diam[0])/2;
On peut aussi directement calculer le rayon du cercle exinscrit de A,B,C avec la formule utilisée par giac

Code : Tout sélectionner

    gen a2=distance2pp(B,C,contextptr),
          b2=distance2pp(C,A,contextptr),
          c2=distance2pp(A,B,contextptr); // distances au carré
    gen a=exinscrit?-sqrt(a2,contextptr):sqrt(a2,contextptr);
    gen b=sqrt(b2,contextptr);
    gen c=sqrt(c2,contextptr);
    gen I=normal((a*A+b*B+c*C)/(a+b+c),contextptr); // centre du cercle
    gen AB(B-A), AC(C-A);
    gen surface=re(AB,contextptr)*im(AC,contextptr)-im(AB,contextptr)*re(AC,contextptr);
    gen r=normal(surface/(a+b+c),contextptr); // rayon

alb
Messages : 1331
Inscription : ven. août 28, 2009 3:34 pm

Re: cercles tangents à 3 droites

Message par alb » lun. juin 18, 2012 5:50 pm

C'est très rapide maintenant:
u:=20;v:=25; // 20 et 25 n'ont pas l'air de ralentir
A:=point(u,a):;B:=point(v,b):;C:=point(u,c):;D:=point(v,d):;E:=point(u,ee):;F:=point(v,f):;
M:=inter_unique(droite(A,B),droite(C,D)):;
N:=inter_unique(droite(A,B),droite(E,F)):;
P:=inter_unique(droite(C,D),droite(E,F)):;
diam:=exinscrit(N,P,M)[1,1] // en 1.6s
R:=(diam[1]-diam[0])/2; // en 0.46s c'est un complexe ?
abs(diam[1]-diam[0])/2; // réponse: Undef/Unsigned Inf encountered in limit en 2.68s / fait planter
write("rayon",R) // la formule est impressionnante !

alb
Messages : 1331
Inscription : ven. août 28, 2009 3:34 pm

Re: cercles tangents à 3 droites

Message par alb » lun. juin 18, 2012 9:34 pm

Je me suis demandé pendant un bout de temps d'où provenait l'erreur dans un script:
ee:=4;f:=3
puis plus loin j'avais écrit
25ee-20f
au lieu de 40 c'était 7.5e-19 cad evalf(25*10^-20*f)
Moralité: ne pas prendre ee comme nom de variable !

alb
Messages : 1331
Inscription : ven. août 28, 2009 3:34 pm

Re: cercles tangents à 3 droites

Message par alb » mar. juin 19, 2012 5:37 am

J'ai aussi essayé avec la formule de giac. Voir la fin de ce topic http://www.ilemaths.net/forum-sujet-498 ... msg4216010 (post du 19-06-12 à 07:33)

parisse
Messages : 5882
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: cercles tangents à 3 droites

Message par parisse » mar. juin 19, 2012 6:11 am

en effet, ee est aussi utilise comme separateur mantisse/exposant, le * est donc obligatoire pour 20*ee.

Répondre