[geometry][line] controler la "longueur" des droites affichées

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 !
malaka
Messages : 14
Enregistré le : ven. 14 juil. 2017, 11:37

[geometry][line] controler la "longueur" des droites affichées

Message non lu par malaka » lun. 25 déc. 2017, 18:24

Bonsoir,
J'aimerais que les droites (A'B'), (B'C') ou même (AB) de l'exemple ci-dessous ne dépassent que légèrement des points mais je n'arrive pas à comprendre comment fixer ce paramètre (est-ce possible ?) les options linemargin ou addmargin sont trop "globales".
Par exemple j'aimerais que la droite (B'C') dépasse légèrement du côté de B' sans aller jusqu'au point A.
Merci d'avance.

Figure asymptote 2dfe4f69831bdba864117c5fc8e8b20c
*** 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. unitsize(1cm);
  3. //show(currentcoordsys, xpen=invisible);
  4. point O=(0,0);
  5.  
  6. point A=2.5*dir(65), A1=4*dir(65), B=1.5*dir(45), C=3*dir(-15);
  7. //les droites
  8. line OX=line(O,4.5*dir(65));
  9. line OY=line(O,4*dir(45));
  10. line OZ=line(O,5*dir(-15));
  11. line AB=line(A,false,B);
  12. line BC=line(B,false,C);
  13.  
  14. // Les points d'intersection et paralléles
  15. line A1B1=parallel(A1,AB);
  16. point B1=intersectionpoint(A1B1, OY);
  17.  
  18. line B1C1=parallel(B1,BC);
  19. point C1=intersectionpoint(OZ, B1C1);
  20.  
  21.  
  22.  
  23. draw(OX); draw(OZ);draw(OY);
  24. draw(AB,dirB=false);draw(BC);
  25. draw(B1C1);draw(A1B1);
  26. dot("A",A,W); dot("A'",A1,NW); dot("B",B,W);dot("O",O,NW);
  27. dot("B'",B1,E);dot("C",C,NE);dot("C'",C1,NE);
Window 11 - TeX live 2023
TeXmaker 5.1.3 -Asymptote 2.79

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

Re: [geometry][line] controler la "longueur" des droites affichées

Message non lu par GM » lun. 25 déc. 2017, 19:35

Bonjour,

avec une nouvelle fonction de ce genre (qui serait probablement à améliorer pour la rendre compatible avec des changements de repère que permet geometry) :

Code : Tout sélectionner

void draw(point pA, point pB, real extA=.2, real extB=.2) {
  draw(interp((pair)pA,(pair)pB,-extA)--interp((pair)pB,(pair)pA,-extB));
}
tu peux t'en servir ainsi (cela déborde par défaut de 20% de la longueur du segment) :

Code : Tout sélectionner

draw(A1,B1);
ou (pour des débordements de 10% et 5% de la longueur du segment)

Code : Tout sélectionner

draw(A1,B1,extA=.1,extB=.05);

Figure asymptote 57c20cc36761ac6e916c74ad49de6b41
*** 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. unitsize(1cm);
  3. //show(currentcoordsys, xpen=invisible);
  4. point O=(0,0);
  5.  
  6. point A=2.5*dir(65), A1=4*dir(65), B=1.5*dir(45), C=3*dir(-15);
  7. //les droites
  8. line OX=line(O,4.5*dir(65));
  9. line OY=line(O,4*dir(45));
  10. line OZ=line(O,5*dir(-15));
  11. line AB=line(A,false,B);
  12. line BC=line(B,false,C);
  13.  
  14. // Les points d'intersection et paralléles
  15. line A1B1=parallel(A1,AB);
  16. point B1=intersectionpoint(A1B1, OY);
  17.  
  18. line B1C1=parallel(B1,BC);
  19. point C1=intersectionpoint(OZ, B1C1);
  20.  
  21. draw(OX); draw(OZ);draw(OY);
  22. draw(AB,dirB=false);draw(BC);
  23.  
  24. // ============ UNE NOUVELLE FONCTION
  25. void draw(point pA, point pB, real extA=.2, real extB=.2) {
  26. draw(interp((pair)pA,(pair)pB,-extA)--interp((pair)pB,(pair)pA,-extB));
  27. }
  28. // =========== .... et son utilisation :
  29. draw(A1,B1);
  30. draw(B1,C1,extA=.1,extB=.05);
  31. // ======================
  32.  
  33. dot("A",A,W); dot("A'",A1,NW); dot("B",B,W);dot("O",O,NW);
  34. dot("B'",B1,E);dot("C",C,NE);dot("C'",C1,NE);
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 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

malaka
Messages : 14
Enregistré le : ven. 14 juil. 2017, 11:37

Re: [geometry][line] controler la "longueur" des droites affichées

Message non lu par malaka » lun. 25 déc. 2017, 23:26

Woaw :shock: ! Et tout ça en moins d'une heure. Merci !
Je vais l'utiliser tel quel. On verra bien si j'arrive à comprendre comment elle est conçue. Je débute
Window 11 - TeX live 2023
TeXmaker 5.1.3 -Asymptote 2.79

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

Re: [geometry][line] controler la "longueur" des droites affichées

Message non lu par GM » mar. 26 déc. 2017, 18:18

malaka a écrit :
lun. 25 déc. 2017, 23:26
Je débute
Je me permets alors de dire qu'il est possible de :
  1. se créer son propre fichier de commandes personnelles : mescommandes.asy ;
  2. de le mettre dans le dossier caché ".asy" du dossier personnel ;
  3. et de mettre dans les scripts "import mescommandes;" pour pouvoir te servir de tes commandes.
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 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Répondre