dirtime et reltime

Pour toute demande d'aide sur des exemples non finalisés, c'est ici.
Les exemples aboutis et intéressants seront ajoutés aux sous-forums qui suivent.

Règles du forum
Pour toute demande d'aide pour la conception (ou la confirmation d'un code) d'une figure Asymptote, c'est ici.

J'invite ceux qui ont régulièrement des questions à poser à aller dans leur panneau de l'utilisateur pour indiquer dans la signature de leurs messages :

  1. Nom du système d'exploitation (W7 ou Ubuntu 12.04 ou ...)
  2. Version d'Asymptote et éditeur utilisé pour les figures Asymptote
  3. Distribution LaTeX et éditeur utilisé pour les tex.


On va gagner du temps dans les réponses !
zariski
Messages : 128
Enregistré le : dim. 30 sept. 2012, 18:50

dirtime et reltime

Message non lu par zariski » mar. 20 nov. 2012, 18:56

Bonsoir !
Toujours en train de bosser Asymptote ...
Puis je connaitre les subtilités de : dirtime et de reltime svp ?
J'ai bien trouvé un truc sur marris.org mais je n'arrive pas à le déchiffrer, quant à la traduction sur Asymptote j'en parle même pas...
Merci
Windows 7 - Winedit 7 - TeXLive2012 - Asymptote 2.16

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1364
Enregistré le : dim. 7 mars 2010, 14:50

Re: dirtime et reltime

Message non lu par GM » mar. 20 nov. 2012, 19:19

bonsoir,
ta question me fait réaliser qu'il faudrait que j'édite certains messages du sujet arctime... pour dire que la fonction arctime renvoie le time d'un point d'un path (et non l'arctime comme il a été écrit).

arctime, dirtime et reltime........... renvoient, toutes les trois, le time d'un point (d'un path) correspondant à un critère donné.

  • pour arctime, le time renvoyé est celui du point situé à une distance curviligne choisie du point de départ ;
  • pour dirtime, le time renvoyé est celui du premier point en lequel la tangente est dirigée par un vecteur directeur choisi ;
  • pour reltime, le time renvoyé est celui du point situé à une certaine proportion choisie de la longueur totale du chemin à partir du point de départ.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 10/10/17) :
PC n°1 :Windows 10 - Asymptote(2.41)+MikTeX2.9 - Editeurs : Notepad++ et TeXworks.
Mes autres PC :Ubuntu 16.04LTS - Asymptote(2.42 git) + TexLive2017 - Editeur : TeXworks.
Merci de préciser la votre pour faciliter l'aide des autres !

zariski
Messages : 128
Enregistré le : dim. 30 sept. 2012, 18:50

Re: dirtime et reltime

Message non lu par zariski » mar. 20 nov. 2012, 19:21

et ben voilà c'est clair ce coup ci !!!
Mille merci !!!
Windows 7 - Winedit 7 - TeXLive2012 - Asymptote 2.16

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1364
Enregistré le : dim. 7 mars 2010, 14:50

Re: dirtime et reltime

Message non lu par GM » mar. 20 nov. 2012, 19:42

GM a écrit :arctime, dirtime et reltime........... renvoient, toutes les trois, le time d'un point (d'un path) correspondant à un critère donné.

  1. pour arctime, le time renvoyé est celui du point situé à une distance curviligne choisie du point de départ ;
  2. pour dirtime, le time renvoyé est celui du premier point en lequel la tangente est dirigée par un vecteur directeur choisi ;
  3. pour reltime, le time renvoyé est celui du point situé à une certaine proportion choisie de la longueur totale du chemin à partir du point de départ.


Trois exemples :
  1. Figure asymptote 3d625bac8539926df536572435a65c8c
    *** 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. path courbe=(0,1.5)..(1.5,1)..(3.5,0.5)..(4,.7)..(4.4,1)..(5,2);
    3. dot(courbe,3bp+.3green);
    4. draw(courbe,red);
    5. for(int k=0; k<size(courbe); ++k) label(string(k),point(courbe,k),N, red);
    6. for(int k=0; k<arclength(courbe); ++k)
    7. {
    8. real t=arctime(courbe,k);
    9. dot(string(k),point(courbe,t),S, 1.5bp+blue);
    10. }
  2. Figure asymptote b70ccf6d227f73c6ba1212dfcd61fcab
    *** 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. path courbe=(0,1.5)..(1.5,1)..(3.5,0.5)..(4,.7)..(4.4,1)..(5,2);
    3. dot(courbe,3bp+.3green);
    4. draw(courbe,red);
    5. pair[] direction={dir(0),dir(45)};
    6. for(pair k : direction)
    7. {
    8. real t=dirtime(courbe,k);
    9. dot(point(courbe,t),1.5bp+blue);
    10. draw(point(courbe,t)-k--point(courbe,t)--point(courbe,t)+k);
    11. }
  3. Figure asymptote ea280baa7d616179fbd86fb0bcdbab8d
    *** 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. path courbe=(0,1.5)..(1.5,1)..(3.5,0.5)..(4,.7)..(4.4,1)..(5,2);
    3. dot(courbe,3bp+.3green);
    4. draw(courbe,red);
    5. for(int k=0; k<size(courbe); ++k) label(string(k),point(courbe,k),N, red);
    6. for(real k=0; k<=1; k+=.1)
    7. {
    8. real t=reltime(courbe,k);
    9. dot(string(k),point(courbe,t),2S, 1.5bp+blue);
    10. }
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 10/10/17) :
PC n°1 :Windows 10 - Asymptote(2.41)+MikTeX2.9 - Editeurs : Notepad++ et TeXworks.
Mes autres PC :Ubuntu 16.04LTS - Asymptote(2.42 git) + TexLive2017 - Editeur : TeXworks.
Merci de préciser la votre pour faciliter l'aide des autres !

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1364
Enregistré le : dim. 7 mars 2010, 14:50

Re: dirtime et reltime

Message non lu par GM » mar. 20 nov. 2012, 19:56

Je rajoute qu'aux fonctions arctime et reltime, correspondent respectivement deux fonctions qui renvoient le point directement (plutôt que son time) : arcpoint et relpoint.

2 est la distance curviligne du début du chemin (0;1.5) au point rouge : j'ai ajouté le repère pour permettre de voir que la distance est cohérente.
.9 pour que le point vert soit situé au 9/10 du chemin en partant du noeud de départ (0;1.5).

Figure asymptote 4cf2c4ecab4be449debcc01bfd9b67fc
*** 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 geometry;
  2. show(defaultcoordsys);
  3. size(400);
  4. path courbe=(0,1.5)..(1.5,1)..(3.5,0.5)..(4,.7)..(4.4,1)..(5,2);
  5. dot(courbe,3bp+.3green);
  6. draw(courbe,blue);
  7. dot("point(courbe,arctime(courbe,2))",point(courbe,arctime(courbe,2)),N,4bp+red);
  8. dot("arcpoint(courbe,2))",arcpoint(courbe,2),S,4bp+red);
  9. dot("point(courbe,reltime(courbe,.9))",point(courbe,reltime(courbe,.9)),N,4bp+.5green);
  10. dot("relpoint(courbe,.9))",relpoint(courbe,.9),S,4bp+.5green);


Les places respectives des points rouge et vert vis à vis des noeuds définissant le chemin (points noirs de time 0, 1, 2, 3, 4 et 5) donnent à penser que leurs times respectifs sont environ 1,2 et 4,5.

Confirmation par leur affichage en console :

Code : Tout sélectionner

write(arctime(courbe,2));
write(reltime(courbe,.9));

qui donne

Code : Tout sélectionner

Process started >>>
1.19497765795582
4.49980803866304
<<< Process finished.


alors que demander l'affichage en console de arcpoint et relpoint va donner les coordonnées des points rouge et vert :

Code : Tout sélectionner

write(arcpoint(courbe,2));
write(relpoint(courbe,.9));

Code : Tout sélectionner

Process started >>>
(1.88011133064857,0.829340802742146)
(4.76804694722963,1.45890833828973)
<<< Process finished.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 10/10/17) :
PC n°1 :Windows 10 - Asymptote(2.41)+MikTeX2.9 - Editeurs : Notepad++ et TeXworks.
Mes autres PC :Ubuntu 16.04LTS - Asymptote(2.42 git) + TexLive2017 - Editeur : TeXworks.
Merci de préciser la votre pour faciliter l'aide des autres !

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1364
Enregistré le : dim. 7 mars 2010, 14:50

Re: dirtime et reltime

Message non lu par GM » mer. 21 nov. 2012, 15:45

J'ai rajouté un exemple pour expliquer le time d'un point d'un path et je simplifierai plus tard les trois exemples qui suivent pour rendre plus limpides les fonctions arctime, dirtime, reltime, car il est vrai qu'à l'époque, j'ai particulièrement manqué de simplicité dans ces exemples.

http://www.marris.org/asymptote/Lignes/index.html#fig_ta00_211112_time
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 10/10/17) :
PC n°1 :Windows 10 - Asymptote(2.41)+MikTeX2.9 - Editeurs : Notepad++ et TeXworks.
Mes autres PC :Ubuntu 16.04LTS - Asymptote(2.42 git) + TexLive2017 - Editeur : TeXworks.
Merci de préciser la votre pour faciliter l'aide des autres !

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1364
Enregistré le : dim. 7 mars 2010, 14:50

Re: dirtime et reltime

Message non lu par GM » mer. 21 nov. 2012, 16:59

GM a écrit :je simplifierai plus tard les trois exemples qui suivent pour rendre plus limpides les fonctions arctime, dirtime, reltime, car il est vrai qu'à l'époque, j'ai particulièrement manqué de simplicité dans ces exemples.

http://www.marris.org/asymptote/Lignes/index.html#fig_ta00_211112_time



Pour deux des trois figures, censées illustrer arctime et reltime, je songe à remplacer par ceci :

Figure asymptote fed79fa7ea542b0890a3b17d142e396d
*** 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. // Trois fonctions à connaitre : arctime, dirtime, reltime.
  2. // Illustrons dans cet exemple l'utilisation de arctime et arcpoint.
  3.  
  4. // real arctime(path p, real L);
  5. // renvoie le "time" du point à la distance curviligne L du noeud 0 sur le chemin p.
  6.  
  7. usepackage("xcolor");
  8. import markers;
  9. import geometry;
  10. show(defaultcoordsys);
  11. size(10cm,0);
  12.  
  13. path ligne=(-3,1)..(-1,2)..(4,0)..(5,3);
  14.  
  15. draw(ligne,blue,dot);
  16. for(int k=0; k<size(ligne); ++k) label(string(k),point(ligne,k),N);
  17.  
  18. // Subdivisons le debut de la ligne, sur une longueur 10, en 10.
  19. // en mettant 11 points rouges espacés de 1.
  20. draw(subpath(ligne,0,arctime(ligne,10)),
  21. nullpen, // << pour ne pas tracer la restriction de la ligne
  22. StickIntervalMarker(i=10,n=2,size=1mm,space=.5mm,dotframe(1.8bp+red))
  23. );
  24. // arctime(ligne,10) a permis d'avoir le "time" du point qui est à une distance
  25. // curviligne 10 du début de la ligne... qui était attendu par la fonction subpath.
  26.  
  27. draw(Label(minipage("\scriptsize\textcolor{red}{\tt arcpoint(ligne,10)}\color{purple}\\
  28. (point situ\'e à une distance curviligne 10 du noeud 0)
  29. dont le \emph{time} est donn\'e\\
  30. par \textcolor{red}{\tt arctime(ligne,10)}.\\
  31. {\tt arctime(ligne,10)}$\approx 2,57$",3.5cm),position=BeginPoint),
  32. (4,2.2)--arcpoint(ligne,10),Arrow);
  33.  
  34. shipout(bbox(1mm,white));


Figure asymptote 8e2a250fa2f78b2cfafd8650c2c30ca9
*** 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. // Trois fonctions à connaitre : arctime, dirtime, reltime.
  2. // Illustrons dans cet exemple l'utilisation de reltime et relpoint.
  3.  
  4. // real reltime(path p, real l);
  5. // renvoie le "time" du point de p situé à une distance relative l (comprise entre 0 et 1) du noeud 0.
  6.  
  7. usepackage("xcolor");
  8. import markers;
  9. import geometry;
  10. show(defaultcoordsys);
  11. size(10cm,0);
  12.  
  13. path ligne=(-3,1)..(-1,2)..(4,0)..(5,3);
  14.  
  15. draw(ligne,blue,dot);
  16. for(int k=0; k<size(ligne); ++k) label(string(k),point(ligne,k),N);
  17.  
  18. // Subdivisons les premiers 70\% de la ligne en 7 en mettant 8 points bleus \'egalement espac\'es.
  19. draw(subpath(ligne,0,reltime(ligne,0.7)),
  20. nullpen, // << pour ne pas tracer la restriction de la ligne
  21. StickIntervalMarker(i=7,n=3,size=1mm,space=.5mm,dotframe(1.8bp+red))
  22. );
  23. // reltime(ligne,0.7) a permis d'avoir le "time" du point qui est à 70% de la longueur
  24. // de la ligne à partir du noeud 0... qui était attendu par la fonction subpath.
  25.  
  26. draw(Label(minipage("\scriptsize\textcolor{red}{\tt relpoint(ligne,0.7)}\color{purple}\\
  27. (point situ\'e à une distance relative de 70\% du noeud 0)\\
  28. dont le \emph{time} est donn\'e\\
  29. par \textcolor{red}{\tt reltime(ligne,0.7)}.\\
  30. {\tt reltime(ligne,0.7)}$\approx 2,06$",4.2cm),position=BeginPoint),
  31. (3.4,2)--relpoint(ligne,0.7),Arrow);
  32. // write(reltime(ligne,0.7)); // Affichage en console : 2.05802439617465
  33.  
  34. shipout(bbox(1mm,white));


J'ai le sentiment que ce sera plus clair. Non ?

Edition de 18h55 : comme je suis convaincu de la réponse... j'officialise les nouveaux exemples :
http://www.marris.org/asymptote/Lignes/index.html#fig_ta01_010808_arctime
http://www.marris.org/asymptote/Lignes/index.html#fig_tc01_010808_reltime
J'ai gardé les liens d'origine mais ajouté un commentaire pour signaler qu'ils ont été profondément remaniés.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 10/10/17) :
PC n°1 :Windows 10 - Asymptote(2.41)+MikTeX2.9 - Editeurs : Notepad++ et TeXworks.
Mes autres PC :Ubuntu 16.04LTS - Asymptote(2.42 git) + TexLive2017 - Editeur : TeXworks.
Merci de préciser la votre pour faciliter l'aide des autres !

zariski
Messages : 128
Enregistré le : dim. 30 sept. 2012, 18:50

Re: dirtime et reltime

Message non lu par zariski » mer. 21 nov. 2012, 19:17

NICKEL !!!!
Finalement, en toute modestie, ma question aura servi à éclaircir ces notions ! :lol:
Encore merci :P
Windows 7 - Winedit 7 - TeXLive2012 - Asymptote 2.16

Répondre