Page 1 sur 1

arctime

Posté : sam. 17 nov. 2012, 11:15
par zariski
Bonjour !
Que fait la commande : real arctime(path p, real L); svp ?

J'ai bien fait une traduction mais encore une fois je doute de mon travail !

Re: arctime

Posté : sam. 17 nov. 2012, 14:53
par GM
Bonjour,

Il y a un exemple explicatif dans la galerie et je crois bien qu'il en a déjà été question sur le forum.

Mais voilà un nouvel exemple :

Figure asymptote 97ce5ae23defc30e2e85e04e52c3e1e0
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. size(400);
  2. marker croix=marker(scale(2)*cross(4),1bp+green);
  3.  
  4. real a = 2, longueur = 5;
  5. path p1=(0,0)--(1,0)--(longueur,0),
  6. p2=(0,0)--(4,0)--(longueur,0);
  7. transform t = shift(0,-a);
  8.  
  9. draw(p1,red,dot(10bp+black));
  10. draw(t*p2,blue,dot(10bp+black));
  11.  
  12. for (real k=0; k<=length(p1); k+=0.5) {
  13. draw(Label(format("%.1f",k)),point(p1,k),2N,red,croix);
  14. draw(Label(format("%.1f",k)),t*point(p2,k),2S,blue,croix);
  15. }
  16. pair centreimage = (longueur/2,-a/2);
  17. label("2 chemins de même longueur (L="+string(arclength(p1))+") d\'efinis par 3 points noirs diff\'erents.",centreimage,N);
  18. label("Les nombres color\'es sont le \textit{time} des points marqu\'es d'une croix.",centreimage,S);
  19. label("Le milieu du premier segment a pour \textit{time} : "+string(arctime(p1,longueur/2)),centreimage,10N,red);
  20. label("Le milieu du second segment a pour \textit{time} : "+string(arctime(p2,longueur/2)),centreimage,10S,blue);

Re: arctime

Posté : lun. 19 nov. 2012, 16:17
par zariski
Je suis toujours aussi ravi d'avoir des réponses aussi rapidement, MERCI.
J'ai longtemps réflêchi à cette notion d'arctime ... Je pense avoir compris; quant à l'utilité, y en a surement une ... :oops:
Voici un petit topo de mon cru, corrigez moi svp si j'ai dit des bêtises.

Figure asymptote 82a0aeeb4d2d870e95b7ca902a947368
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. unitsize(1cm);
  2.  
  3. marker croix=marker(scale(2)*cross(4),1bp+green),
  4. tiret=marker((0,-1)--(0,1),black);
  5. real L=10;
  6. path p1=(0,0)--(2,0)--(6,0)--(L,0),
  7. p2=(0,0)--(4,0)--(7,0)--(L,0);
  8.  
  9. transform t = shift(0,-2);
  10.  
  11. draw(p1,red,dot(6bp+black));
  12.  
  13. draw(t*p2,blue,dot(6bp+black));
  14.  
  15. for (real k=0; k<=length(p1); k+=1) {
  16.  
  17. draw(Label(format("%.1f",k)),point(p1,k),2N,red,croix);
  18.  
  19. draw(Label(format("%.1f",k)),t*point(p2,k),2N,blue,croix);
  20. }
  21.  
  22. for (real k=0; k<=L; k+=1) {
  23.  
  24. draw(Label(format("%.1f",k)),(k,0),2S,tiret);
  25.  
  26. draw(Label(format("%.1f",k)),t*(k,0),2S,tiret);
  27. }
  28.  
  29. label(scale(0.8)*("Deux chemins de m\^eme longueur (L="+string(arclength(p1))+") d\'efinis par 4 points noirs diff\'erents."),(0,-3.4),E);
  30.  
  31. label(scale(0.8)*(string(arctime(p1,0)) + " est le time du point de p1 \`a la distance " + string(arclength((0,0)-(0,0)))),(5,-4),W,red);
  32. label(scale(0.8)*(string(arctime(p1,L/2)) + " est le time du point de p1 \`a la distance " + string(arclength(scale(0.5)*p1))),(5,-5),W,red);
  33. label(scale(0.8)*(string(arctime(p1,0.8*L)) + " est le time du point de p1 \`a la distance " + string(arclength(scale(0.8)*p1))),(5,-6),W,red);
  34. label(scale(0.8)*(string(arctime(p1,L)) + " est le time du point de p1 \`a la distance " + string(arclength(scale(1)*p1))),(5,-7),W,red);
  35.  
  36. label(scale(0.8)*(string(arctime(p2,0)) + " est le time du point de p2 \`a la distance " + string(arclength(scale(0)*p2))),(5,-4),E,blue);
  37. label(scale(0.8)*(string(arctime(p2,L/2)) + " est le time du point de p2 \`a la distance " + string(arclength(scale(0.5)*p2))),(5,-5),E,blue);
  38. label(scale(0.8)*(string(arctime(p2,0.8*L)) + " est le time du point de p2 \`a la distance " + string(arclength(scale(0.8)*p2))),(5,-6),E,blue);
  39. label(scale(0.8)*(string(arctime(p2,L)) + " est le time du point de p2 \`a la distance " + string(arclength(scale(1)*p2))),(5,-7),E,blue);
  40.  
  41. shipout(bbox(0.5mm,white));

Re: arctime

Posté : lun. 19 nov. 2012, 20:57
par GM
zariski a écrit :corrigez moi svp si j'ai dit des bêtises.

Je conseillerai plutôt d'écrire : ... le time du point de p1 à une distance curviligne 5 de son point origine.

Figure asymptote 8b4b79f88a5607aba292225593b16e38
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import markers;
  2. unitsize(100);
  3. path p=unitcircle;
  4. draw(p,dot);
  5. pair pM=point(p,arctime(p,1));
  6. dot(string(arctime(p,1)),pM,5bp+red);
  7. draw((1,0)--(0,0)--pM{dir(-I*pM)}..{-I}cycle,StickIntervalMarker(3,2,blue,dotframe(.8green)));
  8. label("$\frac{2}{\pi} \approx$ "+string(2/pi),truepoint(NE),NW);


unitcircle (de longueur théorique 2\pi) étant défini par 4 "noeuds" et formé de ce que je vais appeler 4 "sections",
le point rouge correspondant à une distance curviligne de 1 depuis le point de coordonnées (1;0) (et permettant donc de définir un secteur angulaire de 1 radian) a un time d'environ 0,6395 : il est situé à 63,95% de la première section depuis le point (1;0).

On constatera que l'on n'obtient pas une valeur approchée aussi proche de la valeur théorique de \frac{2}{\pi} qu'on aurait pu l'imaginer.
\ds\begin{array}{|c|c|}\hline\frac{\pi}{2}&100\%\\\hline1&\frac{2}{\pi}\approx63,661977\%\\\hline\end{array}

J'imagine qu'une partie de l'erreur est imputable au fait que unitcircle manque de précision avec ses (seulement) 4 noeuds.

Re: arctime

Posté : lun. 19 nov. 2012, 23:36
par GM
GM a écrit :On constatera que l'on n'obtient pas une valeur approchée aussi proche de la valeur théorique de \frac{2}{\pi} qu'on aurait pu l'imaginer.
\ds\begin{array}{|c|c|}\hline\frac{\pi}{2}&100\%\\\hline1&\frac{2}{\pi}\approx63,661977\%\\\hline\end{array}

J'imagine qu'une partie de l'erreur est imputable au fait que unitcircle manque de précision avec ses (seulement) 4 noeuds.


On augmente la précision en définissant le cercle avec huit points :

Figure asymptote 8d9be2c7c08ef2ef1d83cb062b25e223
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import graph;
  2. import markers;
  3. unitsize(100);
  4. int n0=8;
  5. path p=Circle(c=(0,0),r=1,n=4*n0);
  6. draw(p,dot);
  7. pair pM=point(p,arctime(p,1));
  8. dot(string(arctime(p,1)),pM,5bp+red);
  9. draw((1,0)--(0,0)--pM{dir(-I*pM)}..{-I}cycle,StickIntervalMarker(3,2,blue,dotframe(.8green)));
  10. label(format("$\frac{2}{\pi}\times %i \approx$ ",n0)+string(2/pi*n0),truepoint(NE),NW);

... et là, on constate que l'écart entre le time effectif et sa valeur théorique est plus petit.

Et avec 10 fois plus de points, on gagne encore en précision :

Figure asymptote 70789384ca06467256d823f71b022063
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import graph;
  2. import markers;
  3. unitsize(100);
  4. int n0=80;
  5. path p=Circle(c=(0,0),r=1,n=4*n0);
  6. draw(p,dot);
  7. pair pM=point(p,arctime(p,1));
  8. dot(string(arctime(p,1)),pM,5bp+red);
  9. draw((1,0)--(0,0)--pM{dir(-I*pM)}..{-I}cycle,StickIntervalMarker(3,2,blue,dotframe(.8green)));
  10. label(format("$\frac{2}{\pi}\times %i \approx$ ",n0)+string(2/pi*n0),truepoint(NE),NW);

Re: arctime

Posté : lun. 19 nov. 2012, 23:51
par zariski
arghhhhh !! Ca va bien finir par rentrer !! :)
Merci^10