Barre de la palette

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.

Barre de la palette

Messagepar maurice » Mercredi 09 Février 2011, 16:45

Bonjour, toujours dans les lignes de niveau, voici un code utilisant palette et contour :

8c5203ecec0312cd5df8394daf45573e.png

Code: Tout sélectionner
import graph;
import palette;
import contour;
size(10cm,10cm,IgnoreAspect);

pair a=(0,0), b=(120,100);

real f(real x, real y) {return sqrt(2*x*y);}

int N=200;
int Divs=10;
int divs=2;
defaultpen(1bp);
pen Tickpen=black;
pen tickpen=gray+0.5*linewidth(currentpen);
pen[] Palette=Rainbow();
bounds range=image(f,Automatic,a,b,N,Palette);

real[] Cvals=uniform(range.min,range.max,Divs);
draw(contour(f,a,b,Cvals,N,operator --),Tickpen);

xaxis("$x$",BottomTop,LeftTicks,above=true);
yaxis("$y$",LeftRight,RightTicks,above=true);
palette("$f(x,y)$",range,(130,0),(140,100),Right,Palette,
PaletteTicks(N=Divs,n=divs,Tickpen,tickpen));


inspiré de la documentation offocielle.
La valeur maximale de f sur le domaine choisi est d'environ 150. Pourtant, la "barre" est graduée jusqu'à 200.
C'est sans doute du à la valeur de N. mais avec N=10, c'est pas terrible !

83d0b6972f201e24279d8880ff3ebb9e.png

Code: Tout sélectionner
import graph;
import palette;
import contour;
size(10cm,10cm,IgnoreAspect);

pair a=(0,0), b=(120,100);

real f(real x, real y) {return sqrt(2*x*y);}

int N=15;
int Divs=10;
int divs=2;
defaultpen(1bp);
pen Tickpen=black;
pen tickpen=gray+0.5*linewidth(currentpen);
pen[] Palette=Rainbow();
bounds range=image(f,Automatic,a,b,N,Palette);

real[] Cvals=uniform(range.min,range.max,Divs);
draw(contour(f,a,b,Cvals,N,operator --),Tickpen);

xaxis("$x$",BottomTop,LeftTicks,above=true);
yaxis("$y$",LeftRight,RightTicks,above=true);
palette("$f(x,y)$",range,(130,0),(140,100),Right,Palette,
PaletteTicks(N=Divs,n=divs,Tickpen,tickpen));


Une idée en utilisant contour ?...

En projetant la surface, le résultat est visuellement bon mais c'est un peu lourd...

Merci

Maurice
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf
maurice
Méga-utilisateur
 
Messages: 399
Inscription: Jeudi 25 Mars 2010, 13:49
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: barre de la palette

Messagepar GMaths » Mercredi 09 Février 2011, 17:39

Petit tour dans palette.asy... pour y lire qu'il suffit de remplacer Automatic par Full ou de simplement supprimer Automatic.

Si tu veux préciser toi-même, remplace par : Range(0,160).
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: barre de la palette

Messagepar maurice » Mercredi 09 Février 2011, 18:06

GMaths a écrit:Petit tour dans palette.asy... pour y lire qu'il suffit de remplacer Automatic par Full ou de simplement supprimer Automatic.

Si tu veux préciser toi-même, remplace par : Range(0,160).


Merci pour ces précisions, je sors de palette.asy et j'avoue que c'est plus clair quand tu le dis.

Autre question : Y'a-t-il un moyen de "forcer" un peu le passage des couleurs (toujours avec contour) pour obtenir un truc qui ressemble à la figure ci-contre (obtenue par projection de ma surface) ?

Maurice
Capture.png
Capture.png (18.63 Kio) Vu 910 fois
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf
maurice
Méga-utilisateur
 
Messages: 399
Inscription: Jeudi 25 Mars 2010, 13:49
Statut actuel: Actif et salarié | Enseignant

Re: barre de la palette

Messagepar GMaths » Mercredi 09 Février 2011, 20:15

maurice a écrit:Autre question : Y'a-t-il un moyen de "forcer" un peu le passage des couleurs (toujours avec contour) pour obtenir un truc qui ressemble à la figure ci-contre (obtenue par projection de ma surface) ?

Tu veux dire "obtenir une couleur uniforme entre deux lignes de niveaux" ?

Je crois que la coloration dans l'exemple initial est approximative.
Même si tu tentes de remplacer Rainbow() par Rainbow(Dvips), ou si tu utilise la fonction quantize... tu vas avoir des zones de couleurs qui ne vont pas coincider avec ce que donne contour.


Une (fausse ?) piste : http://www.piprime.fr/1026/official_asymptote_example-fillcontour/
Le problème pour une adaptation à ton exemple : g n'est pas un ensemble de path fermés pour ton exemple
... donc la coloration avec fill devrait poser problème.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: barre de la palette

Messagepar maurice » Mercredi 09 Février 2011, 20:25

GMaths a écrit:
maurice a écrit:Autre question : Y'a-t-il un moyen de "forcer" un peu le passage des couleurs (toujours avec contour) pour obtenir un truc qui ressemble à la figure ci-contre (obtenue par projection de ma surface) ?

Tu veux dire "obtenir une couleur uniforme entre deux lignes de niveaux" ?


----> oui

GMaths a écrit:Une (fausse ?) piste : http://www.piprime.fr/1026/official_asymptote_example-fillcontour/
Le problème pour une adaptation à ton exemple : g n'est pas un ensemble de path fermés pour ton exemple
... donc la coloration avec fill devrait poser problème.


J'avais déjà remarqué cet exemple et m'étais demandé si on pouvais joindre deux contours ...
Mais je crois qu'il n' y a pas d'équivalent de
Code: Tout sélectionner
pair point(path p, real t);


pour les guide ?

Autre remarque que je m'étais faite, contour est un guide[][], mais dans le cas d'une fonction à deux variables, la dimension est $n \times 1$ ...
A-t-on des exemples où la dimension est $n \times p$ ?

Merci

Maurice
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf
maurice
Méga-utilisateur
 
Messages: 399
Inscription: Jeudi 25 Mars 2010, 13:49
Statut actuel: Actif et salarié | Enseignant

Re: barre de la palette

Messagepar GMaths » Mercredi 09 Février 2011, 21:58

C'est un peu du bricolage... mais faute de mieux (pour l'instant), voilà :

2c86e74b43e33785d84014474339e810.png

Code: Tout sélectionner
import graph;
import palette;
import contour;

unitsize(.1cm);

pair a=(0,0), b=(120,100);

real f(real x, real y) {return sqrt(2*x*y);}

int N=200;
int Divs=16;
int divs=2;

defaultpen(1bp);
pen Tickpen=black;
pen tickpen=gray+0.5*linewidth(currentpen);

bounds range=bounds(0,160);

real[] Cvals=uniform(range.min,range.max,Divs);
guide[][] g=contour(f,a,b,Cvals,N,operator --);

pen[] Palette=quantize(Rainbow(),Divs);

path[] p=new path[g.length];

for(int k=0; k<g.length-1; ++k){
p[k]=(k==0)?box(a,b):(path)g[k][0];
p[k]=buildcycle(p[k],box(min(p[k]),max(p[k])));
fill(p[k],Palette[k]);
}
draw(g);

xaxis("$x$",BottomTop,LeftTicks,above=true);
yaxis("$y$",LeftRight,RightTicks,above=true);
palette("$f(x,y)$",range,(130,0),(140,100),Right,Palette,
PaletteTicks(n=5)
);
for(int x=10; x<120; x+=10) draw((x,0)--(x,100),.3bp+gray+linetype("4 4"));
for(int y=10; y<100; y+=10) draw((0,y)--(120,y),.3bp+gray+linetype("4 4"));

dot(string(f(10,20)),(10,20),NE,2bp+white);
dot(string(f(10,80)),(10,80),NE,2bp+white);
dot(string(f(40,80)),(40,80),NE,2bp+white);
dot(string(f(80,40)),(80,40),NE,2bp+white);
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: barre de la palette

Messagepar maurice » Mercredi 09 Février 2011, 23:02

Merci, c'est pas mal du tout ...
L'avantage sur la projection c'est de pouvoir faire apparaître la barre de la palette à côté ...
Je suis néanmoins surpris par la taille des images : 360ko pour la projection qui vient d'une compilation 3D (projeté d'une surface) et 510 ko pour cette dernière méthode. J'aurais plutôt pensé l'inverse à priori.
Quant à la commande quantize, elle n'apparait pas dans la doc officielle, peut être dans le fichier.asy ?

Merci encore.

Maurice.
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf
maurice
Méga-utilisateur
 
Messages: 399
Inscription: Jeudi 25 Mars 2010, 13:49
Statut actuel: Actif et salarié | Enseignant

Re: barre de la palette

Messagepar GMaths » Mercredi 09 Février 2011, 23:40

maurice a écrit:Je suis néanmoins surpris par la taille des images : 360ko pour la projection qui vient d'une compilation 3D (projeté d'une surface) et 510 ko pour cette dernière méthode.

Dans quel format ? Le pdf pèse 128 ko chez moi.
71,4 ko si je réduis N à 100.


Attention aussi, j'ai changé la taille.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: barre de la palette

Messagepar maurice » Jeudi 10 Février 2011, 09:14

GMaths a écrit:Dans quel format ? Le pdf pèse 128 ko chez moi.
71,4 ko si je réduis N à 100.


C'est en eps. le pdf est à 123.4 Ko

GMaths a écrit:Attention aussi, j'ai changé la taille.


Effectivement, en prenant ta taille unitsize(0.1cm) à la place de size(10cm), le poids de l'image eps, dans le cas de la projection, monte à 719 Ko et celui du pdf est quand même à 481 Ko !
Bonne différence entre les deux formats !

Maurice
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf
maurice
Méga-utilisateur
 
Messages: 399
Inscription: Jeudi 25 Mars 2010, 13:49
Statut actuel: Actif et salarié | Enseignant

Re: barre de la palette

Messagepar GMaths » Jeudi 10 Février 2011, 09:34

maurice a écrit:et celui du pdf est quand même à 481 Ko !

Là, tu parles d'un autre exemple, je suppose... car le mien ci-dessus, comme je l'ai dit :
  • il pèse 71,4ko, avec unitsize(.1cm) et N=100, en compilant avec mes options habituelles : -f pdf -tex pdflatex -render 4
  • il pèse 70,1ko, avec size(10cm) et N=100, en compilant avec les mêmes options
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: barre de la palette

Messagepar maurice » Jeudi 10 Février 2011, 09:39

GMaths a écrit:Là, tu parles d'un autre exemple, je suppose... car le mien ci-dessus, comme je l'ai dit :


Oui, je parle de l'exemple où je projette la surface pour avoir une délimitation nette entre les couleurs :

Code: Tout sélectionner
import grid3;
import palette;
import contour;
currentprojection=orthographic(0,0,1);

unitsize(.1cm);
//size(10cm);

real xmin=0,
     ymin=0,
     zmin=0,
     xmax=120,
     ymax=100,
     zmax=160;

limits((xmin,ymin,zmin),(xmax,ymax,zmax));

real Dx=10, Dy=10, Dz=10;
real Nb=zmax/Dz;

real f(pair z) {return sqrt(2*z.x*z.y);}
surface s=surface(f, (0,0), (120,100), nx=150, ny=150, Spline);

pen[] pal=Rainbow();

real[] lignesdeniveau;
for (int i=1; i<=Nb; ++i) {real ligne=Dz*i ;
           lignesdeniveau.push(ligne);
}

s.colors(palette(s.map(new real(triple v) {return find(lignesdeniveau > v.z);}),pal));
//draw(s);

// On projette la surface
path3 pl=plane(xmax*X,ymax*Y,O);
draw(planeproject(pl)*s,pal , nolight);

// On projette les lignes de niveau
guide[][] pl=contour(f,(xmin,ymin),(xmax,ymax),lignesdeniveau);
for (int i=0; i < pl.length; ++i)
for (int j=0; j < pl[i].length; ++j)
draw(path3(pl[i][j]), 1.5bp+blue);

grid3(XYgrid, Step=Dx);
grid3(YXgrid, Step=Dy);

xaxis3(Label("$x$",MidPoint,align=-Y),
Bounds(Both,Min),OutTicks(Step=Dx),p=blue);
yaxis3(Label("$y$",MidPoint,align=-X),
Bounds(Both,Min),OutTicks(Step=Dy, step=0),p=red);


C'était dans l'attente d'avoir une solution avec contour.

Maurice
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf
maurice
Méga-utilisateur
 
Messages: 399
Inscription: Jeudi 25 Mars 2010, 13:49
Statut actuel: Actif et salarié | Enseignant


Retourner vers Asymptote

 


  • Articles en relation
    Réponses
    Vus
    Dernier message
  • Palette
    par maurice » Jeudi 16 Décembre 2010, 20:29
    0 Réponses
    461 Vus
    Dernier message par maurice Voir le dernier message
    Jeudi 16 Décembre 2010, 20:29

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité