Débuter avec geometry.asy

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 !
Francky
Messages : 40
Enregistré le : sam. 10 avr. 2010, 22:15
Localisation : Sud-Drôme

Débuter avec geometry.asy

Message non lu par Francky » mar. 13 avr. 2010, 22:50

Salut, je débute asymptote, et j'ai choisi geometry.asy pour me lancer, j'espère que c'est une bonne idée.
J'ai de bonnes bases d'algo et des notions d'orienté objet, mais aucune en C.

J'ai quelques questions/remarques (les exemples sont tirés de la doc)

-----

Je présume que O est défini dès le départ, comme
l'origine de defaultcoordsys.

-----

Dans l'exemple suivant:

Code : Tout sélectionner

currentcoordsys=cartesiansystem((0,0), i=(1,0), j=(0.5,1));
coordsys R=cartesiansystem((4,3), i=(-1,0), j=(-0.5,1));
point M=(-1,1)

i et j défini dans R, le sont via defaultcoordsys et non currentcoordsys,
n'est-ce pas ? C'est trompeur, je crois.
en revanche, M est défini via currentcoordsys et non defaultcoordsys.

-----

l'affichage des coordonnées de B(1.5,-2) donne (1,5,-2),
cette double virgule est trompeuse, n'est-ce pas ?
Pourquoi ne pas mettre un point-virgule (dans l'affichage francisé) ?

-----

dans cette définition :

Code : Tout sélectionner

point point(coordsys R, explicit point M, real m=M.m)

Retourne le point de masse m dont les coordonnées relatives à R ont les mêmes valeurs que celles de M.
Ne pas confondre cette routine avec changecoordsys.

R est-il implicitement currentcoordsys ?

-----

Code : Tout sélectionner

point operator *(explicit point P1, explicit pair p2)
Définit point*pair.
p2 est supposé représenter les coordonnées d’un point relativement au repère dans lequel P1 est défini.

j'ai pas compris. (je ferais un test demain pour essayer de comprendre seul)

----

différence entre length et abs ???
degrees et angle ???
-> surement (en) + (fr)

-----

Merci pour votre éclairage, j'aurai surement d'autres questions.
Francky

OG
V.I.P.
V.I.P.
Messages : 142
Enregistré le : dim. 7 mars 2010, 22:27

Re: débuter avec geometry.asy

Message non lu par OG » mer. 14 avr. 2010, 21:22

Bonsoir

Si tu as besoin de faire de la géométrie euclidienne dans le plan, oui c'est une bonne idée.
Francky a écrit :Je présume que O est défini dès le départ, comme
l'origine de defaultcoordsys.

non, O n'est pas définie en tant que variable. Mais par défaut l'origine d'un repère est O.

Francky a écrit :Dans l'exemple suivant:

Code: Tout sélectionner
currentcoordsys=cartesiansystem((0,0), i=(1,0), j=(0.5,1));
coordsys R=cartesiansystem((4,3), i=(-1,0), j=(-0.5,1));
point M=(-1,1)


i et j défini dans R, le sont via defaultcoordsys et non currentcoordsys,
n'est-ce pas ? C'est trompeur, je crois.
en revanche, M est défini via currentcoordsys et non defaultcoordsys.


i et j ne sont pas des variables qui restent. cartesiansystem attend une paire O, une paire i, une paire j
mais cartesiansystem((0,0), (1,0), (0.5,1)); donnera le même repère. C'est toujours plus explicite
de spécifier i=truc, j=machin.
Par contre i et j sont définis dans le repère "absolu d'Asymptote" dans le currentcoordsys, y a qu'à faire
le test pour s'en convaincre.


Pour l'affichage des coordonnées, ouep ce n'est pas terrible. Quels sont les standards
français dans les collèges et lycées ?

Francky a écrit :dans cette définition :

Code: Tout sélectionner
point point(coordsys R, explicit point M, real m=M.m)


Retourne le point de masse m dont les coordonnées relatives à R ont les mêmes valeurs que celles de M.
Ne pas confondre cette routine avec changecoordsys.


R est-il implicitement currentcoordsys ?


Oui et non. Il y a deux "point point(...)" une qui demande un repère, une autre qui n'en demande
pas qui se met dans le currentcoordsys.

Pour abs et length, regarde bien. Dans le 1er on démande le repère et une paire, dans le 2nd un point.

angle -> radians
degrees -> en degrés


O.G.

Francky
Messages : 40
Enregistré le : sam. 10 avr. 2010, 22:15
Localisation : Sud-Drôme

Re: débuter avec geometry.asy

Message non lu par Francky » mer. 14 avr. 2010, 22:23

Réponses claires merci, mais c'est pas acquis pour moi à 100%, je vais persévérer.

pour i et j, j'avais compris l'inverse, je vais faire le test.

pour point point, en fait concrètement, c'est comme si currentcoordsys était implicite, mais on peut choisir autre chose biensur. si j'ai bien compris.
Je ne pourrais faire les tests que plus tard, ...

Et j'ai plein d'autres trucs à régler. à suivre...
(j'ai un conflit /latex\geometrie vs asy\geometrie qui est un peu curieux, voir le post concerné)
(j'ai essayé le module asy\solid et j'ai une incrustation partielle de mon bureau visible dans l'image produite, fil à suivre bientôt)

Merci encore.

Franck

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

Re: débuter avec geometry.asy

Message non lu par GM » sam. 17 avr. 2010, 16:43

OG a écrit :
Francky a écrit :dans cette définition :

Code: Tout sélectionner
point point(coordsys R, explicit point M, real m=M.m)


Retourne le point de masse m dont les coordonnées relatives à R ont les mêmes valeurs que celles de M.
Ne pas confondre cette routine avec changecoordsys.


R est-il implicitement currentcoordsys ?


Oui et non. Il y a deux "point point(...)" une qui demande un repère, une autre qui n'en demande
pas qui se met dans le currentcoordsys.


Je complète la réponse : là aussi... le problème vient du fait qu'il y a point et point.

Point est une appellation qui était utilisée dans Asymptote avant que l'extension geometry de Philippe soit intégrée.
Et le problème ... est que ... suivant la syntaxe utilisée ... c'est le point de Philippe ou c'est le point de JC Bowman pour un usage qui ne nous est pas naturel.

Donc quand tu veux utiliser point, il faut regarder à deux endroits :
  1. la doc de geometry et son index
  2. la doc d'asymptote

1. La première recherche te donnait la liste suivante :

Code : Tout sélectionner

 point point(arc,abscissa)
point point(arc,real)
point point(circle,abscissa)
point point(circle,explicit vector)
point point(circle,point)
point point(coordsys,explicit point,real)
point point(coordsys,pair,real)
point point(ellipse,abscissa)
point point(explicit conic,explicit real)
point point(explicit ellipse,explicit real)
point point(explicit hyperbola,explicit real)
point point(explicit mass)
point point(explicit pair,real)
point point(explicit parabola,explicit real)
point point(explicit vector)
point point(explicit vertex)
point point(hyperbola,abscissa)
point point(line,abscissa)
point point(line,real)
point point(parabola,abscissa)


et notamment

Code : Tout sélectionner

point point(coordsys R, explicit point M, real m=M.m)

où R est obligatoire... et ce n'est pas currentcoordsys par défaut car sinon Philippe aurait indiqué : coordsys R=currentcoordsys.

2. la deuxième recherche dans la doc officielle te donne :

The function
pair point(picture pic=currentpicture, pair dir, bool user=true);
is a convenient way of determining the point on the bounding box of pic in the
direction dir relative to its center, ignoring the contributions from fixed-size
objects (such as labels and arrowheads). If user is true the returned value is
in user coordinates, otherwise it is in PostScript coordinates.


qui explique ce résultat suprenant :

Figure asymptote 9d9d838633163431a23fa67130748794
*** 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. show(currentcoordsys);
  4. pair A=(2,1);
  5. point B=point(A); // sans précision d'un <span style="font-weight: bold">coordsys</span>... ce n'est pas une fonction point de l'extension geometry.
  6. dot("",B,green);
  7. shipout(bbox(Fill(palegreen)));


à ne pas confondre avec :

Figure asymptote 32bd1b2b7d760467f4e9b4c3d9a09cd3
*** 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. show(currentcoordsys);
  4. pair A=(2,1);
  5. point B=point(currentcoordsys,A); // avec précision d'un <span style="font-weight: bold">coordsys</span>... c'est une fonction point de l'extension geometry.
  6. dot("",B,green);
  7. shipout(bbox(Fill(palered)));
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 !

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

Re: débuter avec geometry.asy

Message non lu par GM » sam. 17 avr. 2010, 18:08

GM a écrit :... ou c'est le point de JC Bowman pour un usage qui ne nous est pas naturel.


GM a écrit :2. la deuxième recherche dans la doc officielle te donne :

The function
pair point(picture pic=currentpicture, pair dir, bool user=true);
is a convenient way of determining the point on the bounding box of pic in the
direction dir relative to its center, ignoring the contributions from fixed-size
objects (such as labels and arrowheads). If user is true the returned value is
in user coordinates, otherwise it is in PostScript coordinates.



Et pour convaincre les sceptiques que l'usage de point(pair) (version JC Bowman) est compliquée... il suffit de regarder 4 exemples ici :
http://www.marris.org/asymptote/Points/ ... index.html (fig_po01 à fig_po04).

Les figures en question tentent d'expliquer ce que donnent : point(pA), rectify(pA) et truepoint(pA)... lorsque pA est un pair.
Si truepoint est dans la doc... rectify n'y est pas mais son rôle particulier ne semble utile qu'aux développeurs d'Asymptote.
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 !

OG
V.I.P.
V.I.P.
Messages : 142
Enregistré le : dim. 7 mars 2010, 22:27

Re: débuter avec geometry.asy

Message non lu par OG » sam. 17 avr. 2010, 18:24

pour le rectify, c'est juste normaliser un vecteur par rapport à la norme infini (et pas
euclidienne) car toutes les histoires de taille se font avec les boîtes rectangulaires,
les bounding box.

O.G.

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

Re: débuter avec geometry.asy

Message non lu par GM » dim. 18 avr. 2010, 08:34

OG a écrit :pour le rectify, c'est juste normaliser un vecteur par rapport à la norme infini (et pas
euclidienne) car toutes les histoires de taille se font avec les boîtes rectangulaires,
les bounding box.
Nomaliser... et ajouter (1/2,1/2).
Le lien entre pA et point(pA) n'est pas forcément simple à comprendre tout de même... d'après la doc. Du moins, cela ne l'a pas été pour moi... avant de faire ces exemples pour essayer de comprendre.
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