Lien coord. image et coord. script

Tout ce qui concerne le langage Asymptote. Ce langage est supporté sur le forum via les balises asy.

Modérateur : gdm_asy

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.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 1915
Inscription : samedi 29 décembre 2007, 00:58

Lien coord. image et coord. script

Message par projetmbc »

Bonjour,
prenons le script suivant :

Code : Tout sélectionner

// Source : http://www.marris.org/asymptote/Points/index.html

// Définition de la taille de l'image
size(5cm,0);

// Définition et tracé du segment [AB]
pair A=(0,0), B=(4,0);
draw(A--B);

// Définition de styles de points
marker croix1=marker(scale(2)*cross(4),
                     1bp+gray);
marker croix2=marker(scale(2)*rotate(45)*cross(4),
                     1bp+red);

// Placement des points dans un style particulier
draw("$A$",A,W,croix1);
draw("$B$",B,E,croix1);

// Construction du milieu
draw("$I$",midpoint(A--B),S,croix2);
Comment peut-on connaître les coordonnées en pixel des points dans l'image de la figure ? Mon idée serait de faire une interface graphique des scripts Asymptote pour une gestion via la souris des labels dans les rares cas de conflit avec le tracé.

Toute info. est la bienvenue.

GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2036
Inscription : lundi 01 octobre 2007, 10:20

Re: Asymptote-Lien coord. image et coord. script

Message par GMaths »

projetmbc a écrit :Comment peut-on connaître les coordonnées en pixel des points dans l'image de la figure ?[/quote

]Pour ne mettre jamais posé la question, il faut comme toi que je cherche pour connaitre la réponse...

Quand c'est un peu technique, songe aussi à poser tes questions en anglais ici : http://sourceforge.net/projects/asympto ... rum/409349
S'il a une réponse immédiate à te donner, John Bowman (le grand manitou d'Asymptote) te répondra...
S'il tarde à répondre, c'est qu'il n'a pas de solution rapide...
Parfois, il ajoute des fonctionnalités rapidement suite à une demande... et parfois, j'imagine qu'il note la question dans un coin (s'il l'a trouvée intéressante) car cela lui arrive de déterrer certaines demandes x semaines après, quand il a créé quelque chose pour apporter une solution à un problème posé.
projetmbc a écrit :Mon idée serait de faire une interface graphique des scripts Asymptote pour une gestion via la souris des labels dans les rares cas de conflit avec le tracé.
Sauf que là... je ne comprends pas du tout... ou du moins, ce que j'en comprends, ne justifie pas, il me semble, le développement d'une interface : quand un label est placé lors d'une première compilation, il me semble simple d'apporter une modification pour que cela soit rectifié à la compilation suivante.

projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 1915
Inscription : samedi 29 décembre 2007, 00:58

Re: Asymptote-Lien coord. image et coord. script

Message par projetmbc »

GMaths a écrit :Quand c'est un peu technique, songe aussi à poser tes questions en anglais ici : http://sourceforge.net/projects/asympto ... rum/409349
Merci. Je m'en vais poser my question in english...
GMaths a écrit :
projetmbc a écrit :Mon idée serait de faire une interface graphique des scripts Asymptote pour une gestion via la souris des labels dans les rares cas de conflit avec le tracé.
Sauf que là... je ne comprends pas du tout... ou du moins, ce que j'en comprends, ne justifie pas, il me semble, le développement d'une interface : quand un label est placé lors d'une première compilation, il me semble simple d'apporter une modification pour que cela soit rectifié à la compilation suivante.
Par "cas rares", j'entends les cas pénibles où pas mal de traits se superposent et dans ces cas, trouver au jugé les bonnes valeurs peut vite devenir pénible.

De même, si tu places un label à l'intérieur d'une aire, il arrivera des fois où le placement à la souris se fait très rapidement.

OG
Modérateur
Modérateur
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: Asymptote-Lien coord. image et coord. script

Message par OG »

Bonsoir

je n'avais pas tout lu. Concernant une interface graphique d'Asymptote, il faut savoir
que dans la distribution il y a/avait un tout début, écrit en Python : xasy.
Pour info donc.

O.G.

projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 1915
Inscription : samedi 29 décembre 2007, 00:58

Re: Asymptote-Lien coord. image et coord. script

Message par projetmbc »

Merci.

Je vais essayer de regarder cela. Mais le temps de trouver la formule qu'il me faut, je ne suis pas sûr que cela vaille le coup.

OG
Modérateur
Modérateur
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: Asymptote-Lien coord. image et coord. script

Message par OG »

Bonsoir

J'ai vu le fil sur Amitex et la question sur le forum d'Asymptote : impressionnant !

Je ne sais pas si une telle fonction existe, le problème est que si tu définis la taille de ton image au départ, la coordonnées-image de ton point dépend de tout ce que tu mets dans l'image. C'est donc à la fin, quand tu connais les deux extrèmes (la bounding box et les coordonnées asymptote de ces deux extrèmes) que tu peux faire tous les calculs.

O.G.

GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2036
Inscription : lundi 01 octobre 2007, 10:20

Re: Asymptote-Lien coord. image et coord. script

Message par GMaths »

OG a écrit :J'ai vu le fil sur Amitex et la question sur le forum d'Asymptote : impressionnant !
Surtout compliqué.
OG a écrit :Je ne sais pas si une telle fonction existe, le problème est que si tu définis la taille de ton image au départ, la coordonnées-image de ton point dépend de tout ce que tu mets dans l'image. C'est donc à la fin, quand tu connais les deux extrèmes (la bounding box et les coordonnées asymptote de ces deux extrèmes) que tu peux faire tous les calculs.
J'ai modifié les exemples pour tenter d'expliquer cela, en montrant que ce que renvoient point et truepoint est susceptible d'évoluer :

http://www.marris.org/asymptote/Points/ ... _truepoint

Et j'ajouterai plus tard des commentaires.

projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 1915
Inscription : samedi 29 décembre 2007, 00:58

Re: Asymptote-Lien coord. image et coord. script

Message par projetmbc »

OG a écrit :C'est donc à la fin, quand tu connais les deux extrèmes (la
bounding box et les coordonnées asymptote de ces deux extrèmes) que tu peux
faire tous les calculs.
Un tel fonctionnement me va très bien. Pour l'interface graphique que j'aimerais faire, il y aurait en premier une image avec les points, les courbes... sans aucun label, puis ensuite, une fois cette image produite l'interface graphique ajouterait les labels, et c'est à ce moment là qu'il me faudrait les coordonnées "image".
GMaths a écrit :J'ai modifié les exemples pour tenter d'expliquer cela, en montrant que ce que renvoient point et truepoint est susceptible d'évoluer :
http://www.marris.org/asymptote/Points/ ... _truepoint
Et j'ajouterai plus tard des commentaires.
Pour le moment cela reste du chinois pour moi mais j'attendrais tes commentaires.

PS : dans le cadre de mon projet, comme je vais utiliser Asymptote et que je n'y connais rien, je vais peut-être taper en parallèle un tuto. sur Asymptote qui utiliserait tes exemples. Si cela se fait, cela te dérangerait-il ? Bien entendu, je citerais ton site.

GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2036
Inscription : lundi 01 octobre 2007, 10:20

Re: Asymptote-Lien coord. image et coord. script

Message par GMaths »

projetmbc a écrit :je vais peut-être taper en parallèle un tuto. sur Asymptote...
Bon courage...
... car rien que pour expliquer le fonctionnement de point et truepoint, on pourrait en écrire 5 pages. :lol:

A mes débuts, j'avais le projet d'expliquer Asymptote sur mon wiki et quand j'ai vu le temps que cela me prenait pour comprendre et expliquer les subtilités d'une seule fonction telle que "dir"
http://wiki.noordover.org/doku.php/late ... nction_dir
j'ai été un peu découragé, et je me suis alors contenté de faire des galeries d'exemples : c'est plus plaisant à faire.
projetmbc a écrit :... qui utiliserait tes exemples. Si cela se fait, cela te dérangerait-il ? Bien entendu, je citerais ton site.
Ce ne sont pas MES exemples : ils sont à tout le monde... donc tu en fais ce que tu veux... et il est vraiment inutile de me citer... d'autant plus que les premiers exemples (au moins un tiers des exemples à ce jour), je les ai tous réalisés en étant très très inspiré par ceux de la galerie de Philippe.

projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 1915
Inscription : samedi 29 décembre 2007, 00:58

Re: Asymptote-Lien coord. image et coord. script

Message par projetmbc »

GMaths a écrit :
projetmbc a écrit :je vais peut-être taper en parallèle un tuto. sur Asymptote...
Bon courage...
... car rien que pour expliquer le fonctionnement de point et truepoint, on pourrait en écrire 5 pages. :lol:
Un tuto. n'a pas forcément vocation à être une bible. Si je fais un truc cela restera au raz des pâquerettes et correspondra à une utilisation concrète d'Asymptote.
GMaths a écrit :Ce ne sont pas MES exemples : ils sont à tout le monde... donc tu en fais ce que tu veux... et il est vraiment inutile de me citer... d'autant plus que les premiers exemples (au moins un tiers des exemples à ce jour), je les ai tous réalisés en étant très très inspiré par ceux de la galerie de Philippe.
Je préfère poser la question. Il me parait normal d'indiquer le boulot fait par d'autres. C'est la moindre des choses.

OG
Modérateur
Modérateur
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: [Asymptote] Lien coord. image et coord. script

Message par OG »

Bonsoir

Cela n'a rien à voir avec le sujet, mais plutôt celui de Tikz et des intervalles.
Histoire d'avoir un exemple supplémentaire pour qui veut et pour une fois
que je fais une figure avec Asymptote. Ici la fonction est décroissante, ce qui
oblige à utiliser une portion du graphe de la fonction.

Grosso modo j'ai ajouté le crochet extérieur au tracé de tout de chemin
(début, fin, les deux) avec deux options (taille, ratio), où taille est la hauteur
du crochet et ratio le ratio du trait qui fait que c'est un crochet par rapport à la hauteur
(c'est clair uniquement pour moi et encore). C'est copié sur Bar.
Code pas très propre non plus.

Code : Tout sélectionner

void bracket(picture pic, pair a, pair d, real s,pen p=currentpen)
{
  picture opic;
  pair ortd=s*(-d.y,d.x);
  Draw(opic,(ortd-.5d)--(-0.5d)--0.5d--(.5d+ortd),p+solid);
  add(pic,opic,a);
}
/*
picture bracket(pair a, pair d, real s, pen p=currentpen)
{
  picture pic;
  bracket(pic,a,d,s,p);
  return pic;
}
*/

arrowbar BeginBra(real size=0, real ratiob=.3)
{
  return new bool(picture pic, path g, pen p, margin margin) {
    real size=size == 0 ? barsize(p) : size;
    bracket(pic,point(g,0),size*dir(g,0)*I,ratiob,p);
    return true;
  };
}

arrowbar Bra(real size=0, real ratiob=.3)
{
  return new bool(picture pic, path g, pen p, margin margin) {
    int L=length(g);
    real size=size == 0 ? barsize(p) : size;
    bracket(pic,point(g,L),size*dir(g,L)*I,-ratiob,p);
    return true;
  };
}

arrowbar EndBra(real size=0, real ratiob=.3)= Bra;

arrowbar Bras(real size=0,real ratiob=.3)
{
  return new bool(picture pic, path g, pen p, margin margin) {
    real size=size == 0 ? barsize(p) : size;
    BeginBra(size,ratiob)(pic,g,p,margin);
    EndBra(size,ratiob)(pic,g,p,margin);
    return true;
  };
}
arrowbar BeginBra=BeginBra(),
Bra=Bra(),
EndBra=Bra(),
Bras=Bras();

import graph;

size(200,0);

//draw((2,1)--(1,1),BeginBra);
draw((0,0)..(1,1)..(-1,1),Bras);

real f (real x)
{
  return cos(x);
}

ylimits(-.3,1.5);
xaxis("$x$",EndArrow);
yaxis("$y$",EndArrow);

draw(graph(f,-.5,2,operator ..));

real x0=1;
real delta=.4;

// f décroissante

path hline1=(0,f(x0-delta))--graph(f,x0-delta,x0+delta)--(x0+delta,0)--(x0-delta,0)--(x0-delta,f(x0+delta))--(0,f(x0+delta))--cycle;
fill(hline1,gray+opacity(.5));
draw(hline1,blue);
draw((x0-delta,0)--(x0+delta,0),blue+bp,Bras);
draw((0,f(x0+delta))--(0,f(x0-delta)),blue+bp,Bras);
draw(graph(f,x0-delta,x0+delta),blue+bp);

Vous ne pouvez pas consulter les pièces jointes insérées à ce message.

GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2036
Inscription : lundi 01 octobre 2007, 10:20

Re: [Asymptote] Lien coord. image et coord. script

Message par GMaths »

OG a écrit :Histoire d'avoir un exemple supplémentaire pour qui veut et pour une fois
que je fais une figure avec Asymptote.
Je testerai... et, sauf si tu t'y opposes, je mettrai les fonctions que tu as créées dans un fichier (MerciOG.asy :-))
puis je ferai quelques exemples pour montrer leur utilisation. Exemple (celui que tu as proposé mais avec des traits supplémentaires) :

Code : Tout sélectionner

import graph;
import MerciOG;
	
size(200,0);

real f (real x)
  {
  return cos(x);
  }

ylimits(-.3,1.5);
xaxis("$x$",EndArrow);
yaxis("$y$",EndArrow);

draw(graph(f,-.5,2,operator ..));

real x0=1;
real delta=.4;

path hline1=(x0-delta,0)--graph(f,x0-delta,x0+delta)--(x0+delta,0)--cycle,
     hline2=(0,f(x0-delta))--graph(f,x0-delta,x0+delta)--(0,f(x0+delta))--cycle;

fill(hline1^^hline2,gray+opacity(.5));
draw(hline1^^hline2,blue);

draw((x0-delta,0)--(x0+delta,0),blue+bp,Bras);
draw((0,f(x0+delta))--(0,f(x0-delta)),blue+bp,Bras);
draw(graph(f,x0-delta,x0+delta),blue+bp);

projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 1915
Inscription : samedi 29 décembre 2007, 00:58

Re: [Asymptote] Lien coord. image et coord. script

Message par projetmbc »

GMaths a écrit :MerciOG.asy
On ne se moque pas... D'autant plus que c'est très facile...
Dernière modification par projetmbc le mercredi 30 décembre 2009, 12:18, modifié 1 fois.

projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 1915
Inscription : samedi 29 décembre 2007, 00:58

Re: [Asymptote] Lien coord. image et coord. script

Message par projetmbc »

Chez moi quand je teste l'exemple de OG, j'obtiens les messages d'erreur suivants :

Code : Tout sélectionner

/Users/test: 3.1: invalid token '?'
/Users/test: 4.1: invalid token '?'
/Users/test: 5.1: invalid token '?'
/Users/test: 6.1: invalid token '?'
...
D'où cela vient-il et a-t-on un mode "verbose" d'Asymptote ?

GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2036
Inscription : lundi 01 octobre 2007, 10:20

Re: [Asymptote] Lien coord. image et coord. script

Message par GMaths »

projetmbc a écrit :
GMaths a écrit :MerciOG.asy
On ne se moque pas... D'autant plus que c'est très facile...
:shock: :shock:
Vraiment aucun moquerie de ma part car Olivier est bien plus fort que moi en matière de programmation et de maths... donc c'est un vrai merci.
Sur le moment, je ne savais pas quoi inventer comme nom, donc j'ai écrit ce qui me passait par la tête et je vais trouver un autre nom pour le fichier au moment de la création des fichiers.

Ce qui était très facile, c'était de mal interpréter mon message. ;-)

projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 1915
Inscription : samedi 29 décembre 2007, 00:58

Re: [Asymptote] Lien coord. image et coord. script

Message par projetmbc »

Au temps pour moi, I beg your pardon... :oops:

Sinon une idée pour le message d'erreur ?

GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2036
Inscription : lundi 01 octobre 2007, 10:20

Re: [Asymptote] Lien coord. image et coord. script

Message par GMaths »

projetmbc a écrit :Au temps pour moi, I beg your pardon... :oops:

Sinon une idée pour le message d'erreur ?
Comment as-tu compilé ?

Une idée en l'air : un problème d'encodage lors du copier-coller. Par exemple le é de décroissante.

projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 1915
Inscription : samedi 29 décembre 2007, 00:58

Re: [Asymptote] Lien coord. image et coord. script

Message par projetmbc »

C'est bien ce que je craignais... J'ai pas mal de soucis en ce moment avec les encodages de fichiers... J'ai un projet PHP qui m'indiquait des messages d'erreur et au final le problème venait "juste" de l'encodage. Une journée passée à chercher des erreurs de programmation pour rien. Vive les changements d'OS.. :evil:

Sinon pour l'excellente solution de OG, l'encodage était bien le souci. Il faudrait juste que je comprenne le code, mais ce sera pour plus tard.

Une question relative aux "import" : peut-on importer un package localement en le plaçant dans le même dossier du fichier qui demande "l'import", ou doit-on placer le package dans le dossier d'Asymptote ?

MerciOG.asy :mrgreen:

GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2036
Inscription : lundi 01 octobre 2007, 10:20

Re: [Asymptote] Lien coord. image et coord. script

Message par GMaths »

projetmbc a écrit :Une question relative aux "import" : peut-on importer un package localement en le plaçant dans le même dossier du fichier qui demande "l'import", ou doit-on placer le package dans le dossier d'Asymptote ?
avoue que là... pour y répondre toi-même, il te suffisait en une minute, de créer un fichier avec une commande pour voir si cela passe à l'import... (fatigue de fin d'année ? :lol: )

La réponse est : oui.

OG
Modérateur
Modérateur
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: [Asymptote] Lien coord. image et coord. script

Message par OG »

Bonsoir

De rien si l'exemple vous convient. Par contre les noms sont à revoir tout de même
et on peut aussi faire les crochets extérieurs si nécessaire et avec
des nouveaux noms, IntBracket, ExtBracket par exemple et les cousins Begin, End, etc.

Question programmation Asymptote, en fait et sans fausse modestie, je pense que Gaëtan
est plus compétent que moi (si si). L'intérêt d'Asymptote réside (pour moi) dans sa syntaxe proche
du C++ et si on a le courage de plonger dans la doc et avec un peu de pratique il n'est pas
très difficile d'y contribuer, de faire ses propres routines, etc... Mon asymptote-dada
fut les splines cubiques, puis les versions 3D (surfaces lisses en carreaux de Bézier) et il faudrait
continuer dans ce domaine...

bonne fin d'année
O.G.