Questions sur le module geometry_dev

Tout ce qui concerne le langage Asymptote. Ce langage est utilisable sur le forum via les balises asy.
[participation réservée aux utilisateurs inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
Ph. Ivaldi

Re: [Asymptote] Questions sur le module geometry_dev

Message non lu par Ph. Ivaldi »

MB a écrit :Il semblerait que les Labels ne soient pas pris en compte dans la taille de la figure.
Exact, c'est de ma faute.
J'ai corrigé la routine en ajoutant l'option "allObject" qui vaut true par défaut.
Si "allObject" vaut false les objets de taille fixe comme les labels ou les têtes de flèches sont ignorés.
MB a écrit :
Ph. Ivaldi a écrit :Du coup, j'ai envie de supprimer finalbounds...
Bah ça je ne sais pas. Ca peut toujours être utile à certains. :D
Oui mais non :-) ça ressemble trop à une bidouille, je l'ai basculer dans le module perso base_pi.asy.
MB
Administrateur
Administrateur
Messages : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

Re: [Asymptote] Questions sur le module geometry_dev

Message non lu par MB »

Ph. Ivaldi a écrit :Exact, c'est de ma faute.
J'ai corrigé la routine en ajoutant l'option "allObject" qui vaut true par défaut.
Si "allObject" vaut false les objets de taille fixe comme les labels ou les têtes de flèches sont ignorés.
Bon bah c'est carrément parfait là alors. :mrgreen:
J'ai modifié cet exemple pour qu'il utilise la fonction addMargins.
Ph. Ivaldi a écrit :Oui mais non :-) ça ressemble trop à une bidouille, je l'ai basculer dans le module perso base_pi.asy.
Ok, je suis d'accord avec toi aussi.
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
MB
Administrateur
Administrateur
Messages : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

Re: [Asymptote] Questions sur le module geometry_dev

Message non lu par MB »

Bon alors je continue mes essais et j'ai deux nouvelles questions :

1) La routine intersectionpoints remplace avantageusement la routine classique intersectionpoint (elle s'adapte aux objets de type line par exemple). Par contre, en général on peut se débrouiller pour qu'il n'y aie qu'un seul point d'intersection mais la structure retournée est toujours sous la forme point[] (même si il n'y a qu'un seul point). Si on veut stocker ça dans un point, on obtient :

Code : Tout sélectionner

cannot cast 'point[]' to 'point'
On doit donc utiliser intersectionpoints()[0] pour que ça fonctionne. C'est pas bien grave mais je me demandais si il était possible de rendre la chose automatique lorsqu'il n'y a qu'un seul point. :?:

2) Je teste la routine tremble. Comment faire pour tracer de cette façon un objet de type line ?
Si j'essaye j'obtiens :

Code : Tout sélectionner

cannot call 'path tremble(path g, real angle=<default>, real frequency=<default>, real random=<default>)'
with parameters '(line, real frequency, int random)'
Voilà pour ces deux nouvelles questions. :mrgreen:
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
MB
Administrateur
Administrateur
Messages : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

Re: [Asymptote] Questions sur le module geometry_dev

Message non lu par MB »

En fait, c'est cette figure que je voudrais passer en version "à main levée". :wink:
Mais je ne sais d'ailleurs pas si le résultat sera satisfaisant ou pas avec les marqueurs ... mais bon, c'est pour tester quoi ! :mrgreen:
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
Ph. Ivaldi

Re: [Asymptote] Questions sur le module geometry_dev

Message non lu par Ph. Ivaldi »

MB a écrit : 1) La routine intersectionpoints remplace avantageusement la routine classique intersectionpoint (elle s'adapte aux objets de type line par exemple). Par contre, en général on peut se débrouiller pour qu'il n'y aie qu'un seul point d'intersection mais la structure retournée est toujours sous la forme point[] (même si il n'y a qu'un seul point). Si on veut stocker ça dans un point, on obtient :

Code : Tout sélectionner

cannot cast 'point[]' to 'point'
On doit donc utiliser intersectionpoints()[0] pour que ça fonctionne. C'est pas bien grave mais je me demandais si il était possible de rendre la chose automatique lorsqu'il n'y a qu'un seul point. :?:
Je ne suis pas sûr de comprendre...
Pour l'intersection de deux droites il y "intersectionpoint(line,line)" qui renvoie un "point" (éventuellement à l'infini).
Si tu cherches l'intersection d'un cercle avec une de ses tangentes, c'est bien "intersectionpoints" qu'il faut utiliser et ça renvoie un tableau de points.
MB a écrit : je me demandais si il était possible de rendre la chose automatique lorsqu'il n'y a qu'un seul point. :?:
C'est possible en faisant un "casting" de "point[]" vers "point" mais ça risque de générer des effet de bords imprévisibles; il faut que je teste...
Ceci dit, je ne suis pas convaincu de l'utilité...
MB a écrit : 2) Je teste la routine tremble. Comment faire pour tracer de cette façon un objet de type line ?
Si j'essaye j'obtiens :

Code : Tout sélectionner

cannot call 'path tremble(path g, real angle=<default>, real frequency=<default>, real random=<default>)'
with parameters '(line, real frequency, int random)'
Il n'est pas possible de convertir un objet de type "line" en "path" car la taille des objets changent au fur et à mesure de la construction.
Il te faut donc définir toi-même le chemin à tracer; tu peux utiliser les propriétés line.A, line.B et line.u pour le définir.
Note qu'il existe "curpoint(line l,real x)" pour avoir un point d'abscisse x dans le repère de l (essaye show(line)), et "relpoint(line l, real t)" pour avoir un point relatif au vecteur \vec{l.Al.B}.

Je ne vais toujours pas avancer une date mais j'ai commencé la dernière section de la documentation (autour de 80 pages actuellement): Les triangles.
Il restera quand même un peut de travail sur les inversions et les routines annexes (tremble, cross etc...).
MB
Administrateur
Administrateur
Messages : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

Re: [Asymptote] Questions sur le module geometry_dev

Message non lu par MB »

Merci pour ta réponse.

C'est vrai que le premier point n'est pas très important. En fait je voulais une intersection line (demi-droite en fait) et circle et il me semble que intersectionpoint n'en veut pas. Enfin bref, c'est du détail ça.

Pour le second point, je vais regarder ça de plus prêt maintenant que j'ai compris le problème.

Bon courage pour la fin de ta documentation en tout cas et encore merci pour tout. :D
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
Ph. Ivaldi

Re: [Asymptote] Questions sur le module geometry_dev

Message non lu par Ph. Ivaldi »

MB a écrit :En fait, c'est cette figure que je voudrais passer en version "à main levée". :wink:
Je pense que le code suivant :

Code : Tout sélectionner

point pC = intersectionpoints(line(pB,false,rotate(35,pB)*pA),circle(pB,6))[0];
point pD = intersectionpoints(line(pC,false,rotate(-112,pC)*pB),circle(pC,4))[0];
point pE = intersectionpoints(line(pD,false,rotate(-78,pD)*pC),circle(pD,4))[0];
peut avantageusement être remplacé par celui là :

Code : Tout sélectionner

point pC = pB+6*(rotate(35)*unit(pA-pB));
point pD = pC+4*(rotate(-112)*unit(pB-pC));
point pE = pD+4*(rotate(-78)*unit(pC-pD));
MB a écrit :Mais je ne sais d'ailleurs pas si le résultat sera satisfaisant ou pas avec les marqueurs ...
Pour les marqueurs il faut que je redéfinisse les routines de marquage et cela n'a rien à faire dans geometry_dev...
Du coup j'ai décidé de supprimer tout ce qui concerne le tracé à main levé du paquet geometry_dev pour créer un paquet à part: trembling_pi.
Je développerais plus tard ce qu'il manque à ce paquet.
Tu peux voir une version provisoire de ta figure à main levé ICI.

À faire du ménage, j'ai aussi basculé rotatedLabel dans base_pi (en attendant mieux) car John n'aime pas cette structure à juste titre.
J'avais aussi posté un patch de plain_label.asy pour automatiser la rotation des labels via un paramètre optionnel mais ça ne plaît toujours pas au patron; là je ne sais pas pourquoi (les routines Label sont quand même des bestioles très sensibles à la modification :-) ).
Je pense que John travaille actuellement à ces publications, il s'occupera plus d'Asymptote après.
MB a écrit :mais bon, c'est pour tester quoi ! :mrgreen:
Encore merci de tester!
Les retours de tests permettent d'avoir un paquet plus "propre" et plus cohérent.
MB
Administrateur
Administrateur
Messages : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

Re: [Asymptote] Questions sur le module geometry_dev

Message non lu par MB »

Merci pour ces remarques Phillipe.

En effet, le code qui remplace l'utilisation de intersectionpoints est plus simple. Je n'avais jamais utilisé la commande unit.
C'est bien mieux comme ça.

Par ailleurs, le rendu de la figure tracée à main levée est très satisfaisant !
C'est bien pratique de pouvoir passer la commande tremble comme un paramètre de la commande draw.
Je suppose que c'est une modification que tu as faite pour l'occasion.

Si je comprends bien tu vas faire plusieurs modules alors :
  • geometry(_pi) : pour les structures line, triangle, segment, ...
  • tremble(_pi) : pour l'effet "à main levée".
  • markers(_pi) : pour les différents marqueurs (segments et angles).
Et dans d'autres modules, les modifications des commandes de Label par exemple (et AddMargins aussi peut être).

Ca sera sans doute plus clair comme ça et plus facile à maintenir.
En tout cas, l'ensemble simplifie grandement l'utilisation d'Asymptote. C'est vraiment appréciable. :D
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
Ph. Ivaldi

Re: [Asymptote] Questions sur le module geometry_dev

Message non lu par Ph. Ivaldi »

MB a écrit :C'est bien pratique de pouvoir passer la commande tremble comme un paramètre de la commande draw.
Je suppose que c'est une modification que tu as faite pour l'occasion.
Oui, les routines pour tracer les droites admettent maintenant un paramètre supplémentaire: pathModifier pathModifier=NoModifier
Où le type pathModifier représente une routine admettant pour paramètre un path et retournant un path.
Par exemple, NoModifier est simplement défini par pathModifier NoModifier=new path(path g){return g;};
Par soucis de cohérence il faudrait que je fasse de même pour les paraboles et les hyperboles bien que j'imagine mal quelqu'un vouloir tracer une hyperbole comme « à main levée ».
MB a écrit :Si je comprends bien tu vas faire plusieurs modules alors :
  • geometry(_pi) : pour les structures line, triangle, segment, ...
  • tremble(_pi) : pour l'effet "à main levée".
  • markers(_pi) : pour les différents marqueurs (segments et angles).
Et dans d'autres modules, les modifications des commandes de Label par exemple (et AddMargins aussi peut être).
Pas tout à fait. Les markers "normaux" (segments et angles compris) ainsi que Addmargins restent dans geometry(_pi).
Dans tremble(_pi) je mettrais tout ce qu'il faut pour faire des figures à main levée; il redéfinira par exemple toute les routines de marquage.
Enfin dans base_pi je laisse pour le moment rotatedLabel, en attendant que John implémente lui même ce qu'il faut pour automatiser ça (il ma promis qu'il le ferait).
alekhine
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 228
Inscription : samedi 18 août 2007, 21:57
Localisation : Caen

Re: [Asymptote] Questions sur le module geometry_dev

Message non lu par alekhine »

Bonsoir,

je vais poser une question bête qui n'a pas réellement à voir avec les modules de Philippe Ivaldi, mais comme certains de ses exemples se terminent par ce code, je la pose quand même ici :

Code : Tout sélectionner

shipout(bbox(xmargin=1mm,invisible));
A quoi sert ce code en fin de figure ?
Merci.
MB
Administrateur
Administrateur
Messages : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

Re: [Asymptote] Questions sur le module geometry_dev

Message non lu par MB »

alekhine a écrit :A quoi sert ce code en fin de figure ?
Pas en grand chose en fait, mais j'aime bien le mettre.
Ca laisse un blanc de 1mm autour de la figure (une petite marge quoi). C'est tout.
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
Ph. Ivaldi

Re: [Asymptote] Questions sur le module geometry_dev

Message non lu par Ph. Ivaldi »

Bonsoir,
J'ai été devancé par MB mais bon.. je poste quand même ma réponse.
alekhine a écrit :

Code : Tout sélectionner

shipout(bbox(xmargin=1mm,invisible));
A quoi sert ce code en fin de figure ?
La documentation dit: To draw a bounding box with margins around a picture, fit the picture to a frame using the function

Code : Tout sélectionner

frame bbox(picture pic=currentpicture, real xmargin=0,
                 real ymargin=xmargin, pen p=currentpen,
                 filltype filltype=NoFill);
En d'autres termes, cette routine retourne la "frame" obtenue en ajoutant une boite autour de pic avec les marges données et rempli suivant la valeur de Filltype.
Sa principale utilisation se fait en conjonction avec shipout qui ordonne de générer la figure au format spécifié (eps par défaut).

Par exemple le code suivant génère une figure toute blanche:

Code : Tout sélectionner

size(6cm);
currentpen=white;
draw(unitcircle);
real sq=sqrt(2)/2;
draw(shift(-sq,-sq)*scale(2*sq)*unitsquare);
Avec un shipout(bbox(2mm,Fill(black))); à la fin tout devient lumineux.
Non, sombre.
Bref, on voit quelque chose.

Pour le plaisir des yeux:

Code : Tout sélectionner

size(6cm);

currentpen=white;
draw(unitcircle);
real sq=sqrt(2)/2;
draw(shift(-sq,-sq)*scale(2*sq)*unitsquare);

picture pic;
add(pic,rotate(45)*xscale(1.5)*bbox(2mm,RadialShade(grey,black)));
shipout(bbox(pic,RadialShade(grey,black)));
Pièces jointes
bbox.png
bbox.png (28.08 Kio) Consulté 2040 fois
alekhine
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 228
Inscription : samedi 18 août 2007, 21:57
Localisation : Caen

Re: [Asymptote] Questions sur le module geometry_dev

Message non lu par alekhine »

Merci pour vos réponses tous les deux, et (je sais je me répète) féliciations et encouragements pour le travail de Philippe.
MB
Administrateur
Administrateur
Messages : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

Re: [Asymptote] Questions sur le module geometry_dev

Message non lu par MB »

Je n'arrive pas à trouver le module trembling_pi.asy !
J'ai cherché ici ... mais rien. :?
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
Ph. Ivaldi

Re: [Asymptote] Questions sur le module geometry_dev

Message non lu par Ph. Ivaldi »

MB a écrit :Je n'arrive pas à trouver le module trembling_pi.asy !
Excuse moi, j'ai oublié de la mettre sous contrôle SVN; c'est chose faite...
J'ai aussi remarqué que beaucoup de liens de la page de présentation des modules sont morts; je regarderais ça prochainement.
Merci.
MB
Administrateur
Administrateur
Messages : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

Re: [Asymptote] Questions sur le module geometry_dev

Message non lu par MB »

Merci Philippe j'ai trouvé ! :D

Par contre, geometry_dev a été renommé en geometry_pi c'est ça ?

J'ai des doutes car apparemment l'objet point n'est pas définit :

Code : Tout sélectionner

no type of name 'point'
Je suis un peu perdu dans les noms de modules là. En tout cas geometry_dev n'est pas sur le SVN.
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
Ph. Ivaldi

Re: [Asymptote] Questions sur le module geometry_dev

Message non lu par Ph. Ivaldi »

MB a écrit :Par contre, geometry_dev a été renommé en geometry_pi c'est ça ?
Je suis un peu perdu dans les noms de modules là.
Oui c'est un peu le bazar dans mes modules... Depuis que j'ai été admis développeur dans l'équipe d'Asymptote je les ai laissés en plan...
geometry_pi est mon module perso de géométrie, il est obsolète et ne devrait plus être utilisé.
Dès que la documentation française de geometry_dev est terminée il va y avoir plusieurs possibilités:
* soit John est intéressé pour le mettre immédiatement en version officielle; dans ce cas geometry_dev deviendra simplement geometry
* soit il préfère attendre la version anglaise + une période de tests; dans ce cas geometry_dev deviendra temporairement geometry_pi pour un jour intégrer les paquets officiels
* soit John n'est pas du tout intéressé par ce paquet; dans ce cas geometry_dev deviendra définitivement geometry_pi et je serais un peu déçu.
MB a écrit :J'ai des doutes car apparemment l'objet point n'est pas définit :

Code : Tout sélectionner

no type of name 'point'
Il faut utiliser geometry_dev, la version de "geometry" en dev quoi...
MB a écrit :En tout cas geometry_dev n'est pas sur le SVN.
Si, mais comme je le considère inachevé c'est dans la branche branches
Ne pas regarder les geo_*: chez moi geometry_dev est saucissonné en plusieurs fichiers pour plus de confort d'édition et un script assemble le tout en geometry_dev lors des mises à jour.
Voilà... c'est le foutoir... et tant que cette foutue doc ne sera pas terminée ça va resté le foutoir :-(
Pendant les vacances de Noël je vais donner un gros coup de balai !
MB
Administrateur
Administrateur
Messages : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

Re: [Asymptote] Questions sur le module geometry_dev

Message non lu par MB »

Ok, tout est plus clair maintenant !!
J'ai pu télécharger les dernière version de geometry_dev et tout fonctionne parfaitement maintenant. :mrgreen:
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
francois
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 856
Inscription : jeudi 21 septembre 2006, 00:14
Localisation : Antony
Contact :

Re: [Asymptote] Questions sur le module geometry_dev

Message non lu par francois »

Bonjour,

je voulais savoir s'il y aura bientôt une documentation d'Asymptote en français.
Si c'est le cas, j'espère qu'on aura un petit message sur MathemaTeX, car je suis vraiment intéressé.
François Lafont
Ph. Ivaldi

Re: [Asymptote] Questions sur le module geometry_dev

Message non lu par Ph. Ivaldi »

francois a écrit :je voulais savoir s'il y aura bientôt une documentation d'Asymptote en français.
O.G a lancé l'idée d'en maintenir une, à laquelle j'aurais volontiers participé, mais le temps nous manque cruellement.
Quand on sait que je phagocyte le temps restant à O.G pour traduire en anglais la doc de geometry_dev, on comprends qu'il va encore falloir attendre...
Il y a aussi Kib2 qui a commencé un tutoriel sympa ici mais c'est au point mort depuis cet été; je suis sûr que quelques messages d'encouragement lui feraient plaisir :clapping:
francois a écrit :Si c'est le cas, j'espère qu'on aura un petit message sur MathemaTeX,
Bien sûr.
francois a écrit :car je suis vraiment intéressé.
Je comprends.
Moi ce que j'attends avec impatience c'est le support des scènes en 3D; je n'ai aucune idée de l'avancement de ce travail...
J'ai surtout vu passé dernièrement des mises à jour de l'interface graphique (il ne faut pas oublier que Asymptote est doté d'une GUI -- pour l'instant rudimentaire --).
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message