Page 1 sur 1

[Résolu]tangent: no matching function 'tangent(path, point)'

Posté : mar. 13 avr. 2010, 16:03
par maurice
bonjour, j'essaie de faire un dessin : 1 cercle et deux tangentes :

Code : Tout sélectionner

   import geometry;

   //taille de l'image
   size(7cm,0);
   
   //Cercle C et point M sur le cercle
   draw(unitcircle);
   pair pM=(1*dir(130)), pO=(0,0);
   dot("$M$",pM,NW);
   dot("$O$",pO,E);   

        //droite (OM) et médiatrice de [OM]
   draw(line(pM,pO));
   line medAB=bisector(pM,pO);
   draw (medAB);
   
   //intersection de la médiatrice et du cercle ; tracé des tangentes
   path cerc=unitcircle, droite=rotate(90,(pM+pO)/2)*(interp(pM,pO,-2)--interp(pM,pO,2));
   point[] inter=intersectionpoints(cerc,droite);
   dot("$P_1$",inter[0],N);
   dot("$P_2$",inter[1],W);
   draw(tangent(cerc,inter[0]));


La compilation donne :

Code : Tout sélectionner

$ asy transformations_ex.asy
transformations_ex.asy: 82.13: no matching function 'tangent(path, point)'


Je ne comprends pas. je prend le code des sites http://www.marris.org ethttp://www.piprime.fr/files/asymptote/geometry/index.html

merci de votre aide

maurice

Re: tangent : no matching function 'tangent(path, point)'

Posté : mar. 13 avr. 2010, 17:00
par chellier
La syntaxe est tangent(circle c, point M).
Il faut remplacer

Code : Tout sélectionner

path cerc=unitcircle

par

Code : Tout sélectionner

circle cerc=circle(pO,1);


Pour que ça compile chez moi, j'ai dû en plus me passer de interp :

Code : Tout sélectionner

import geometry;
import math;
//taille de l'image
size(7cm,0);

//Cercle C et point M sur le cercle
draw(unitcircle);
pair pM=(1*dir(130)), pO=(0,0);
dot("$M$",pM,NW);
dot("$O$",pO,E);

//droite (OM) et médiatrice de [OM]
draw(line(pM,pO));
line medAB=bisector(pM,pO);
draw(medAB);

//intersection de la médiatrice et du cercle ; trace des tangentes
circle cerc=circle(pO,1);
line droite=rotate(90,(pM+pO)/2)*line(pM,pO);
point[] inter=intersectionpoints(droite,cerc);
dot("$P_1$",inter[0],N);
dot("$P_2$",inter[1],W);
draw(tangent(cerc,inter[0]));

addMargins(2cm,2cm);


Christophe

Re: tangent : no matching function 'tangent(path, point)'

Posté : mar. 13 avr. 2010, 18:02
par maurice
Merci, ca marche, il va falloir que j'ai les yeux en face des trous pour bien lire les exemples !

maurice

Re: [Résolu]tangent: no matching function 'tangent(path, poi

Posté : sam. 17 avr. 2010, 15:07
par GM
Ca y est... après une semaine d'absence, je viens de rentrer et de remonter le pc. :-)
Je relis les messages de la semaine en commençant par celui-ci... et j'y vais de mon commentaire.

Il y avait plusieurs façons de faire la figure : tout dépend si on se sert de l'extension geometry ou pas.

Il faut comprendre qu'il existait des possibilités d'intersection et de tracer une tangente avant que l'extension de Philippe soit intégrée à Asymptote...
... et donc depuis l'intégration, on a parfois plusieurs méthodes : travailler avec pair/path (sans geometry) ou point/line/circle (avec geometry).

Ainsi la ligne suivante posait problème ... car elle était un mélange des deux.
point[] inter=intersectionpoints(droite,cerc);

Il ne pouvait y avoir de tangente... puisque déjà l'intersection posait problème.

Il a été suggéré de faire en sorte que cerc soit de type circle... mais on pouvait pour obtenir les points d'intersection remplacer aussi point[] par pair[].

Des exemples d'intersection ici : il faudrait que j'en ajoute davantage utilisant geometry... mais surtout que je mette en garde sur tous les premiers exemples sur le fait qu'il s'agit de possibilités sans geometry à distinguer de celles avec l'extension de Philippe.