Questions sur le module geometry_dev

Tout ce qui concerne l'utilisation ou l'installation d'Asymptote.

Modérateur: gdm_asy

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Re: [Asymptote] Questions sur le module geometry_dev

Messagepar MB » Jeudi 11 Octobre 2007, 18:15

J'ai de nouvelles questions : :mrgreen:

1) Il ne me semble pas avoir vu de structure représentant une demi-droite. J'ai raté quelque chose ou pas ?

2) Est-il possible de récupérer la longueur d'un segment ?

3) Est-il possible de tracer un cercle en donnant son diamètre (sous forme de segment) ?
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6891
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: [Asymptote] Questions sur le module geometry_dev

Messagepar alekhine » Jeudi 11 Octobre 2007, 19:55

Bonjour

Il ne me semble pas avoir vu de structure représentant une demi-droite. J'ai raté quelque chose ou pas ?


Code: Tout sélectionner
line demidroite=line(a,false,b);

donne la demi-droite $[AB)$.
alekhine
Kilo-utilisateur
 
Messages: 225
Inscription: Samedi 18 Août 2007, 20:57
Localisation: Caen
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Questions sur le module geometry_dev

Messagepar MB » Jeudi 11 Octobre 2007, 20:27

Merci alekhine ! :D
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6891
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Questions sur le module geometry_dev

Messagepar kib2 » Jeudi 11 Octobre 2007, 20:31

MB a écrit:2) Est-il possible de récupérer la longueur d'un segment ?


Si je ne dis pas de bétise :

Code: Tout sélectionner
point A = (1,-3);
point B = (-2,5);
real longueur=abs(A-B);


devrait faire l'affaire.

MB a écrit:3) Est-il possible de tracer un cercle en donnant son diamètre (sous forme de segment) ?


Au pire tu peux toujours créer une routine en utilisant midpoint(A,B) pour récupérer le centre...

Alekhine --> Alexander : le champion du monde, gagné ?
kib2
Hecto-utilisateur
 
Messages: 80
Inscription: Samedi 25 Novembre 2006, 22:44

Re: [Asymptote] Questions sur le module geometry_dev

Messagepar MB » Jeudi 11 Octobre 2007, 20:58

Ok je vais tester ça dès que possible.
Pour résumer, si on veut tracer le cercle de diamètre [AB] on fait :

Code: Tout sélectionner
circle((A+B)/2,abs(A-B)/2);


J'ai pas testé mais (A+B)/2 doit bien remplacer midpoint.
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6891
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Questions sur le module geometry_dev

Messagepar alekhine » Jeudi 11 Octobre 2007, 21:19

Alekhine --> Alexander : le champion du monde, gagné ?

Gagné.
alekhine
Kilo-utilisateur
 
Messages: 225
Inscription: Samedi 18 Août 2007, 20:57
Localisation: Caen
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Questions sur le module geometry_dev

Messagepar Ph. Ivaldi » Jeudi 11 Octobre 2007, 21:22

MB a écrit:Ok je vais tester ça dès que possible.
Pour résumer, si on veut tracer le cercle de diamètre [AB] on fait :
Code: Tout sélectionner
circle((A+B)/2,abs(A-B)/2);


Si tu veux mais un simple circle(A,B); fait l'affaire (voir ici).

Pour répondre à tes autres questions:

je vais ajouter les routines length(segment) et circle(segment).

Le code suivant est quand même assez lisible:

Code: Tout sélectionner
import geometry_dev;
size(10cm);
segment s=segment((0,0),(1,1));
draw(s);
draw(circle(s.A,s.B));
write(abs(s.A-s.B));


Merci beaucoup de tester geometry_dev avant sa sortie !
Ph. Ivaldi
Méga-utilisateur
 
Messages: 267
Inscription: Vendredi 12 Janvier 2007, 23:27
Statut actuel: Actif et salarié

Re: [Asymptote] Questions sur le module geometry_dev

Messagepar Ph. Ivaldi » Jeudi 11 Octobre 2007, 21:30

kib2 a écrit:Au pire tu peux toujours créer une routine en utilisant midpoint(A,B) pour récupérer le centre...

midpoint(un_segment) existe déjà, ainsi que point(un_segment,0.5).
On peut aussi faire (un_point+un_autre_point)/2.
Il est bien possible qu'il manque des routines fondamentales; ne pas hésiter à m'en faire part.
Ph. Ivaldi
Méga-utilisateur
 
Messages: 267
Inscription: Vendredi 12 Janvier 2007, 23:27
Statut actuel: Actif et salarié

Re: [Asymptote] Questions sur le module geometry_dev

Messagepar MB » Jeudi 11 Octobre 2007, 21:30

Ph. Ivaldi a écrit:Si tu veux mais un simple circle(A,B); fait l'affaire (voir ici).


En effet, je n'avais pas vu ça !
C'est bien plus simple.

Ph. Ivaldi a écrit:je vais ajouter les routines length(segment) et circle(segment).


Super. :mrgreen:

Ph. Ivaldi a écrit:Merci beaucoup de tester geometry_dev avant sa sortie !


De rien c'est avec plaisir.
Merci à toi pour tout ton travail concernant Asymptote. :wink:
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6891
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Questions sur le module geometry_dev

Messagepar kib2 » Jeudi 11 Octobre 2007, 21:36

Tiens, c'est marrant ça...

je n'avais jamais fais attention au fait qu'Asymptote n'utilise pas les primitives usuelles de C/C++ pour afficher à l'écran avec "write()".
"cout" ne fonctionne pas apparement: bizarre.

Alekhine : c'était pas très dur en tant que joueur d'échecs :)
kib2
Hecto-utilisateur
 
Messages: 80
Inscription: Samedi 25 Novembre 2006, 22:44

Re: [Asymptote] Questions sur le module geometry_dev

Messagepar Ph. Ivaldi » Jeudi 11 Octobre 2007, 21:47

MB a écrit:
Ph. Ivaldi a écrit:je vais ajouter les routines length(segment) et circle(segment).

Super. :mrgreen:


Ça y est, c'est fait.
En revanche pour markangle je laisse la routine avec les "pair".
Autrement dit un markangle((1,1),(0,0),(-1,-1)) ne tient pas compte du repère courant.
Je pense qu'en général on marque un angle formé par des points nommés.

Bien sur le code suivant ne pose pas de problème grace au «casting point to pair»:

Code: Tout sélectionner
import geo_dev;
size(10cm);
currentcoordsys=cartesiansystem((1,1),(1,1),(-1,1));
show(currentcoordsys);
point A=(1,1), B=(-1,1);
draw(origin()--A^^origin()--B);
markangle(A,origin(),B);
Ph. Ivaldi
Méga-utilisateur
 
Messages: 267
Inscription: Vendredi 12 Janvier 2007, 23:27
Statut actuel: Actif et salarié

Re: [Asymptote] Questions sur le module geometry_dev

Messagepar MB » Jeudi 11 Octobre 2007, 21:58

Ph. Ivaldi a écrit:Ça y est, c'est fait.


Merci. Il faut que je télécharge la dernière version alors maintenant.
Au fait, il est prévu que John Bowman intègre ce module à la version officielle d'Asymptote ? en remplacement de geometry.asy ?

Ph. Ivaldi a écrit:En revanche pour markangle je laisse la routine avec les "pair".
Autrement dit un markangle((1,1),(0,0),(-1,-1)) ne tient pas compte du repère courant.
Je pense qu'en général on marque un angle formé par des points nommés.


Ok, pas de problème.
Il est vrai qu'en général je nomme toujours les points. :D
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6891
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Questions sur le module geometry_dev

Messagepar Ph. Ivaldi » Jeudi 11 Octobre 2007, 22:42

MB a écrit:Au fait, il est prévu que John Bowman intègre ce module à la version officielle d'Asymptote ? en remplacement de geometry.asy ?

A priori oui, c'était prévu ainsi au départ mais comme John ne m'a jamais donné son avis sur ce module, je ne peux rien affirmer.
Je pense qu'il attend la documentation...
Ph. Ivaldi
Méga-utilisateur
 
Messages: 267
Inscription: Vendredi 12 Janvier 2007, 23:27
Statut actuel: Actif et salarié

Re: [Asymptote] Questions sur le module geometry_dev

Messagepar MB » Samedi 13 Octobre 2007, 23:19

C'est très pratique le linemargin négatif (voir cet exemple). Ca évite parfois d'utiliser la commande box qui doit se configurer un peu à la main et qui est pénible je trouve lorsqu'on veut augmenter un peu la taille de la figure pour prolonger les droites.
Au départ je n'avais pas pensé à essayé. Donc je le signale.
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6891
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Questions sur le module geometry_dev

Messagepar Ph. Ivaldi » Dimanche 14 Octobre 2007, 10:56

MB a écrit:Ca évite parfois d'utiliser la commande box qui doit se configurer un peu à la main et qui est pénible je trouve lorsqu'on veut augmenter un peu la taille de la figure pour prolonger les droites.

Héhééé, j'ai aussi prévu la chose... :-)
Essaye la commande finalbounds();
Elle va te sortir la taille finale de la bounding box. Il te suffit alors de coller le résultat dans un draw(..., invisible) et de modifier à ta convenance les valeurs.
Ph. Ivaldi
Méga-utilisateur
 
Messages: 267
Inscription: Vendredi 12 Janvier 2007, 23:27
Statut actuel: Actif et salarié

Re: [Asymptote] Questions sur le module geometry_dev

Messagepar Ph. Ivaldi » Dimanche 14 Octobre 2007, 11:28

MB a écrit:C'est très pratique le linemargin négatif (voir cet exemple).


Je profite de cet exemple pour montrer comment l'on peut procéder avec la structure "triangle", le code est plus court, les labels du triangle automatiquement placés.

Code: Tout sélectionner
unitsize(1.5cm);
import geometry_dev;
linemargin = -5mm;

triangle T=triangle((3,3),origin,(4,0));
drawline(T);
label(T,alignFactor=5);

point pD = point(T.AB,0.75);
point pE = point(T.BC,0.6);
point pI = intersectionpoint(T.AC,line(pD,pE));

dot(Label("$D$",align=2N),pD);
dot(Label("$E$",align=2S),pE);
dot(Label("$I$",align=NE),pI);

draw(line(pD,pE),dashed);

shipout(bbox(xmargin=1mm,invisible));
Fichiers joints
triangle.png
triangle.png (14.27 Kio) Vu 1129 fois
Ph. Ivaldi
Méga-utilisateur
 
Messages: 267
Inscription: Vendredi 12 Janvier 2007, 23:27
Statut actuel: Actif et salarié

Re: [Asymptote] Questions sur le module geometry_dev

Messagepar MB » Dimanche 14 Octobre 2007, 11:47

Ah oui, je viens de faire des tests là. C'est vrai que c'est pratique pour pouvoir connaitre les dimensions de la figure. :D
J'avais cherché une fonction de ce genre là avant de penser à tenter un linemargin négatif (même si l'usage du linemargin négatif est plus limité car il ne permet pas d'allonger l'image que d'un seul côté par exemple).

Par contre, je ne comprends pas pourquoi la fonction affiche les coordonnées à l'écran alors qu'elle pourrait les retourner sous forme de tableau non ? (peut être qu'il y a déjà une fonction Asymptote qui fait ça, mais j'avais cherché et je n'ai rien trouvé)

En fait, l'idéal (pour moi) serait une fonction du genre addmargin(top,bottom,left,right) qui permette d'augmenter chacune des dimensions de l'image comme on le souhaite.
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6891
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Questions sur le module geometry_dev

Messagepar MB » Dimanche 14 Octobre 2007, 11:52

Ph. Ivaldi a écrit:Je profite de cet exemple pour montrer comment l'on peut procéder avec la structure "triangle", le code est plus court, les labels du triangle automatiquement placés.


Oui merci. J'ai pas encore bien testé les structures de type "triangle". :D
Dans cet exemple je voulais surtout utiliser la structure line pour tracer des segments ou des demi-droites. Les figures obtenues sont un peu différentes.
En tout cas c'est bien pratique les labels placés automatiquement. :mrgreen:
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6891
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Questions sur le module geometry_dev

Messagepar Ph. Ivaldi » Dimanche 14 Octobre 2007, 18:46

MB a écrit:J'avais cherché une fonction de ce genre là avant de penser à tenter un linemargin négatif


À la façon Asymptote pur et dur c'est tout simplement :o

Code: Tout sélectionner
currentpicture.addBox(point(SW),point(NE),-(lmargin,bmargin),(rmargin,tmargin));


J'ai bien mis 1h30 pour la trouver celle-là...

MB a écrit:Par contre, je ne comprends pas pourquoi la fonction affiche les coordonnées à l'écran alors qu'elle pourrait les retourner sous forme de tableau non ?


Ben non ce n'est pas possible. Le but de cette routine est de donner la taille finale.
Elle utilise donc un processus qui défère le calcul juste avant le "shipout"; impossible alors de récupérer des valeurs.

MB a écrit:En fait, l'idéal (pour moi) serait une fonction du genre addmargin(top,bottom,left,right) qui permette d'augmenter chacune des dimensions de l'image comme on le souhaite.


Suffit de demander... :wink:
J'ai ajouté la routine suivante:

Code: Tout sélectionner
void addMargins(picture pic=currentpicture,
                real lmargin=0, real bmargin=0,
                real rmargin=lmargin, real tmargin=bmargin)
{/*Add margins to 'pic' with respect to the current bounding box of 'pic'.*/
  pic.addBox(point(pic,SW),point(pic,NE),-(lmargin,bmargin),(rmargin,tmargin));
}


Elle doit être utilisée à la fin du code, juste avant un éventuel "shipout".
Du coup, j'ai envie de supprimer finalbounds...
Ph. Ivaldi
Méga-utilisateur
 
Messages: 267
Inscription: Vendredi 12 Janvier 2007, 23:27
Statut actuel: Actif et salarié

Re: [Asymptote] Questions sur le module geometry_dev

Messagepar MB » Dimanche 14 Octobre 2007, 19:18

Merci c'est super ça.
Je viens de tester et ça fonctionne bien comme je le souhaitais.

Par contre, juste une chose que je ne comprends pas.
Il semblerait que les Labels ne soient pas pris en compte dans la taille de la figure. Car par exemple, si un point est situé sur la gauche de la figure et qu'un label est encore placé à gauche de ce point (qui est disons le point le plus à gauche de la figure) alors la présence de ce Label va augmenter la dimension de la figure pour pouvoir être affiché. Mais, d'après mes tests il semblerait qu'un addMargins visant à augmenter encore la taille de la figure sur la gauche ne soit pas pris en compte à partir du Label mais plutôt à partir du point. Il faut donc augmenter la valeur dans le addMargins afin que la dimension de la figure soit véritablement augmentée.

Je ne sais pas si je suis bien clair ! :|

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
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6891
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

PrécédenteSuivante

Retourner vers Asymptote

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 10 invités