GM a écrit :Si tu veux que cette dernière ligne fonctionne dans tous les cas, il va falloir réfléchir aux calculs nécessaires des deux pairs attendus par box.Code : Tout sélectionner
clip(box( .... , .... ));
Je viens de rentrer du lycée et d'y réfléchir : la meilleure façon est de
- dessiner grille et repère sans la commande clip ;
- ... puis de décider quels seront les deux points pA et pB d'une des diagonales du rectangle souhaité :
*** 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
- unitsize(0.45cm);
- import geometry;
- currentcoordsys=cartesiansystem((0,0),i=(1/2,-sqrt(3)/2),j=(1/2,sqrt(3)/2));
- coordsys Rc = currentcoordsys;
- int xmin=-3, xmax=8, ymin=xmin, ymax=xmax;
- for(int i=ymin; i<ymax+1; ++i) draw(segment((xmin,i),(xmax,i)), paleblue);
- for(int i=xmin; i<xmax+1; ++i) draw(segment((i,ymin),(i,ymax)), paleblue);
- show(Rc, linewidth(1pt), Arrow);
- point pA=(-3,.5), pB=(6,2);
- dot(pA^^pB);
- Tu peux alors "clipper" :
Code : Tout sélectionner
clip(box(pA,pB));
*** 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
- unitsize(0.45cm);
- import geometry;
- currentcoordsys=cartesiansystem((0,0),i=(1/2,-sqrt(3)/2),j=(1/2,sqrt(3)/2));
- coordsys Rc = currentcoordsys;
- int xmin=-3, xmax=8, ymin=xmin, ymax=xmax;
- for(int i=ymin; i<ymax+1; ++i) draw(segment((xmin,i),(xmax,i)), paleblue);
- for(int i=xmin; i<xmax+1; ++i) draw(segment((i,ymin),(i,ymax)), paleblue);
- show(Rc, linewidth(1pt), Arrow);
- point pA=(-3,.5), pB=(6,2);
- //dot(pA^^pB);
- clip(box(pA,pB));
A noter que pA et pB sont du type point et qu'il n'y a plus de Rc*.