Page 1 sur 1
[geometry][line] controler la "longueur" des droites affichées
Posté : lun. 25 déc. 2017, 18:24
par malaka
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.
*** 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
import geometry;
unitsize(1cm);
//show(currentcoordsys, xpen=invisible);
point O=(0,0);
point A=2.5*dir(65), A1=4*dir(65), B=1.5*dir(45), C=3*dir(-15);
//les droites
line OX=line(O,4.5*dir(65));
line OY=line(O,4*dir(45));
line OZ=line(O,5*dir(-15));
line AB=line(A,false,B);
line BC=line(B,false,C);
// Les points d'intersection et paralléles
line A1B1=parallel(A1,AB);
point B1=intersectionpoint(A1B1, OY);
line B1C1=parallel(B1,BC);
point C1=intersectionpoint(OZ, B1C1);
draw(OX); draw(OZ);draw(OY);
draw(AB,dirB=false);draw(BC);
draw(B1C1);draw(A1B1);
dot("A",A,W); dot("A'",A1,NW); dot("B",B,W);dot("O",O,NW);
dot("B'",B1,E);dot("C",C,NE);dot("C'",C1,NE);
Re: [geometry][line] controler la "longueur" des droites affichées
Posté : lun. 25 déc. 2017, 19:35
par GM
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) :
ou (pour des débordements de 10% et 5% de la longueur du segment)
*** 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
import geometry;
unitsize(1cm);
//show(currentcoordsys, xpen=invisible);
point O=(0,0);
point A=2.5*dir(65), A1=4*dir(65), B=1.5*dir(45), C=3*dir(-15);
//les droites
line OX=line(O,4.5*dir(65));
line OY=line(O,4*dir(45));
line OZ=line(O,5*dir(-15));
line AB=line(A,false,B);
line BC=line(B,false,C);
// Les points d'intersection et paralléles
line A1B1=parallel(A1,AB);
point B1=intersectionpoint(A1B1, OY);
line B1C1=parallel(B1,BC);
point C1=intersectionpoint(OZ, B1C1);
draw(OX); draw(OZ);draw(OY);
draw(AB,dirB=false);draw(BC);
// ============ UNE NOUVELLE FONCTION
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));
}
// =========== .... et son utilisation :
draw(A1,B1);
draw(B1,C1,extA=.1,extB=.05);
// ======================
dot("A",A,W); dot("A'",A1,NW); dot("B",B,W);dot("O",O,NW);
dot("B'",B1,E);dot("C",C,NE);dot("C'",C1,NE);
Re: [geometry][line] controler la "longueur" des droites affichées
Posté : lun. 25 déc. 2017, 23:26
par malaka
Woaw
! 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
Re: [geometry][line] controler la "longueur" des droites affichées
Posté : mar. 26 déc. 2017, 18:18
par GM
malaka a écrit : ↑lun. 25 déc. 2017, 23:26
Je débute
Je me permets alors de dire qu'il est possible de :
- se créer son propre fichier de commandes personnelles : mescommandes.asy ;
- de le mettre dans le dossier caché ".asy" du dossier personnel ;
- et de mettre dans les scripts "import mescommandes;" pour pouvoir te servir de tes commandes.