[geometry] grille dans un repere quelconque

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 !
Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: [geometry] grille dans un repere quelconque

Message non lu par GM » ven. 12 oct. 2012, 13:34

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
  1. dessiner grille et repère sans la commande clip ;
  2. ... puis de décider quels seront les deux points pA et pB d'une des diagonales du rectangle souhaité :

    Figure asymptote 81582930de80531ba6d23bcea99e419a
    *** 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(0.45cm);
    2. import geometry;
    3. currentcoordsys=cartesiansystem((0,0),i=(1/2,-sqrt(3)/2),j=(1/2,sqrt(3)/2));
    4. coordsys Rc = currentcoordsys;
    5. int xmin=-3, xmax=8, ymin=xmin, ymax=xmax;
    6. for(int i=ymin; i<ymax+1; ++i) draw(segment((xmin,i),(xmax,i)), paleblue);
    7. for(int i=xmin; i<xmax+1; ++i) draw(segment((i,ymin),(i,ymax)), paleblue);
    8. show(Rc, linewidth(1pt), Arrow);
    9.  
    10. point pA=(-3,.5), pB=(6,2);
    11. dot(pA^^pB);
  3. Tu peux alors "clipper" :

    Code : Tout sélectionner

    clip(box(pA,pB));

    Figure asymptote 21dcc83c6973e804e684f75c0498c681
    *** 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(0.45cm);
    2. import geometry;
    3. currentcoordsys=cartesiansystem((0,0),i=(1/2,-sqrt(3)/2),j=(1/2,sqrt(3)/2));
    4. coordsys Rc = currentcoordsys;
    5. int xmin=-3, xmax=8, ymin=xmin, ymax=xmax;
    6. for(int i=ymin; i<ymax+1; ++i) draw(segment((xmin,i),(xmax,i)), paleblue);
    7. for(int i=xmin; i<xmax+1; ++i) draw(segment((i,ymin),(i,ymax)), paleblue);
    8. show(Rc, linewidth(1pt), Arrow);
    9.  
    10. point pA=(-3,.5), pB=(6,2);
    11. //dot(pA^^pB);
    12. clip(box(pA,pB));


    A noter que pA et pB sont du type point et qu'il n'y a plus de Rc*.
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 !

maurice
Messages : 262
Enregistré le : jeu. 25 mars 2010, 13:00
Contact :

Re: [geometry] grille dans un repere quelconque

Message non lu par maurice » ven. 12 oct. 2012, 14:50

GM a écrit :Je viens de rentrer du lycée et d'y réfléchir


On se croise, j'y vais dans une petite heure, ah les joies du décallage horaire.

GM a écrit : 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é :
...
Tu peux alors "clipper" :


Merci pour la méthode, je vais essayer ça avant de partir.

En ajoutant

Code : Tout sélectionner

write(Rc*(xmin,ymax));
write(Rc*(xmax,ymin));


j'obtiens

Code : Tout sélectionner

(0,17.3205080756888)
(0,-17.3205080756888)
ce qui pose aussi problème.

Il faudra que je potasse la doc pour comprendre l'effet de Rc sur un objet de type pair.

En tous cas merci.

Bruno
Doc 3D
Si ça ne marche pas, essayez la version pdf

Fedora 23 -- Asymptote 2.35 -- TeXlive 2013 -- emacs et/ou gedit

maurice
Messages : 262
Enregistré le : jeu. 25 mars 2010, 13:00
Contact :

Re: [geometry] grille dans un repere quelconque

Message non lu par maurice » ven. 12 oct. 2012, 15:15

Re, voila finalement mon oeuvre :

Figure asymptote 84b42b64e75fc6521bfbaea61feb9820
*** 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(0.5cm);
  2. usepackage("esvect");
  3. import geometry;
  4.  
  5. currentcoordsys=cartesiansystem((0,0),i=(1/2,-sqrt(3)/2),j=(1/2,sqrt(3)/2));
  6. coordsys Rc = currentcoordsys;
  7. int xmin=-5, xmax=15, ymin=xmin, ymax=xmax;
  8. for(int i=ymin; i<ymax+1; ++i) draw(segment((xmin,i),(xmax,i)), paleblue);
  9. for(int i=xmin; i<xmax+1; ++i) draw(segment((i,ymin),(i,ymax)), paleblue);
  10. // show(Rc, linewidth(1pt), Arrow);
  11.  
  12. draw(segment((3,0),(6,0)), red, Arrow);
  13. label("$\vv{u}$", Rc*(4.5,0), SW, red);
  14. draw(segment((3,0),(3,4)), red, Arrow);
  15. label("$\vv{v}$", Rc*(3,2), NW, red);
  16. draw(segment((6,3), (7,5)), blue, Arrow);
  17. label("$\vv{w_3}$", Rc*(6.5, 4), S, blue);
  18. draw(segment((6,6), (5,10)), blue, Arrow);
  19. label("$\vv{w_4}$", Rc*(5.5, 8), E, blue);
  20.  
  21. point pA=(-3,3), pB=(12,5);
  22. // dot(pA^^pB);
  23.  
  24. // write(Rc*(xmin,ymax));
  25. // write(Rc*(xmax,ymin));
  26.  
  27. clip(box(pA,pB));


Bruno
Doc 3D
Si ça ne marche pas, essayez la version pdf

Fedora 23 -- Asymptote 2.35 -- TeXlive 2013 -- emacs et/ou gedit

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

Re: [geometry] grille dans un repere quelconque

Message non lu par GM » ven. 12 oct. 2012, 16:39

maurice a écrit :En ajoutant

Code : Tout sélectionner

write(Rc*(xmin,ymax));
write(Rc*(xmax,ymin));

j'obtiens

Code : Tout sélectionner

(0,17.3205080756888)
(0,-17.3205080756888)
ce qui pose aussi problème.


Où est le problème ?
Cela indique uniquement que, compte tenu de l'inclinaison que tu as donné au repère, les points de coordonnées (xmin,ymax) et (xmax,ymin) dans Rc
sont en fait sur une verticale... et donnent un rectangle aplati.

maurice a écrit :Il faudra que je potasse la doc pour comprendre l'effet de Rc sur un objet de type pair.


Un exemple pour t'aider à comprendre à quoi c'est équivalent :

Figure asymptote b77df6661e93be881ba05e7677196c67
*** 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. size(100);
  3. currentcoordsys=cartesiansystem((0,0),i=(1/2,-1),j=(1,1));
  4. coordsys Rc = currentcoordsys; show(Rc);
  5.  
  6. pair pA=Rc*(3,2);
  7. dot(pA);


Figure asymptote 6bd9e8146c1a651e1b29058f8fc1913d
*** 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. size(100);
  3. currentcoordsys=cartesiansystem((0,0),i=(1/2,-1),j=(1,1));
  4. coordsys Rc = currentcoordsys; show(Rc);
  5.  
  6. point pA=(3,2);
  7. dot(pA);
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 !

maurice
Messages : 262
Enregistré le : jeu. 25 mars 2010, 13:00
Contact :

Re: [geometry] grille dans un repere quelconque

Message non lu par maurice » sam. 13 oct. 2012, 05:40

GM a écrit :Où est le problème ?
Cela indique uniquement que, compte tenu de l'inclinaison que tu as donné au repère, les points de coordonnées (xmin,ymax) et (xmax,ymin) dans Rc
sont en fait sur une verticale... et donnent un rectangle aplati.


Je n'ai rien voulu dire de plus ...

Par ailleurs, tes explications me semblent claires.
Cela n'empeche pas qu'il faudrait que je lise la doc de geometry un peu plus sérieusement !

Bruno
Doc 3D
Si ça ne marche pas, essayez la version pdf

Fedora 23 -- Asymptote 2.35 -- TeXlive 2013 -- emacs et/ou gedit

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

Re: [geometry] grille dans un repere quelconque

Message non lu par GM » sam. 13 oct. 2012, 09:07

maurice a écrit :Cela n'empeche pas qu'il faudrait que je lise la doc de geometry un peu plus sérieusement !

A part Philippe, je crois qu'on le devrait tous. :mrgreen:

Ce qui est utile à lire aussi, c'est son index. Voilà ce qu'il dit pour l'opérateur

Code : Tout sélectionner

pair operator *(coordsys R, pair p)
:
http://www.piprime.fr/files/asymptote/geometry/modules/geometry.asy.index.type.html#*(coordsys,pair)
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