Surface et couleurs

Tout ce qui concerne le langage Asymptote. Ce langage est utilisable sur le forum via les balises asy.
[participation réservée aux membres 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.
maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Surface et couleurs

Message non lu par maurice »

Bonjour,

Je cherche un moyen de colorer une surface avec plusieurs couleurs. Il y a palette mais le problème est que je n'arrive pas à mettre les couleurs ou je veux;
J'ai bien essayé de construire une palette :

Code : Tout sélectionner

import grid3;
import contour;
import palette;
currentprojection=orthographic(-4,-4,50);
size(10cm);
size3(10cm,10cm,10cm,IgnoreAspect);

limits((0,0,0),(10,12,280));

real f(pair z) {return 2*z.x*(z.y+1);}
surface s=surface(f,(0,0), (10,12), nx=100, ny=100, Spline);
pen[] pal(){
	    pen[] Palette;
	          Palette=new pen[7];
	          Palette[0]=red;
	          Palette[1]=green;
	          Palette[2]=blue;
	          Palette[3]=yellow;
	          Palette[4]=gray;
	          Palette[5]=orange;
	          Palette[6]=Cyan;
	    return Palette;
}

draw(s,mean(palette(s.map(zpart),pal())) ,nolight);

real [] lignesdeniveau={40,80,120,160,200,240,280};
draw(lift(f,contour(f,(0,0),(10,12),lignesdeniveau)),1bp+black);

grid3(XYgrid, Step=1);
grid3(YXgrid, Step=1);
grid3(ZXgrid(Relative(1)), Step=20);
grid3(YZgrid(Relative(1)), Step=1);
grid3(XZgrid(Relative(1)), Step=1);
grid3(ZYgrid(Relative(1)), Step=20);

xaxis3(Label("$x$",MidPoint,align=-Z),
Bounds(Both,Min),OutTicks(Step=1,endlabel=false),p=blue);
yaxis3(Label("$y$",MidPoint,align=-Z),
Bounds(Both,Min),OutTicks(Step=2, step=1),p=red);
zaxis3(Label("$z$" ,MidPoint,align=-X),XYEquals(0,12),InTicks(Step=40, step=20),p=1bp+.5green);
Je voudrais que le changement de couleur se produise à chaque ligne de niveau ...

Si quelqu'un a une idée ?

Merci

Maurice.
ce que j'obtiens
ce que j'obtiens
Capture-1.png (20.9 Kio) Consulté 1797 fois
ce que je voudrais
ce que je voudrais
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
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: surface et couleurs

Message non lu par GMaths »

Tu as regardé les exemples ?

Il me semble que tu ne pourras faire guère mieux que dans cet exemple :

http://marris.org/asymptote/Surfaces_3D ... 09_surface

Je ne pense pas qu'il y ait eu des évolutions depuis qui permettent d'avoir une détection exacte du changement de couleur ; c'est toujours des carreaux que l'on colorie ou pas... donc on augmente n pourqu'ils soient petits et que cela fasse illusion, en mettant un gros trait sur la frontière.

Cela vaudrait le coup de reposer la question sur le forum officiel... pour les encourager à améliorer les choses à ce propos.
maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: surface et couleurs

Message non lu par maurice »

Bonjour et merci,
avec la ligne :

Code : Tout sélectionner

s.colors(palette(s.map(new real(triple v) {return find(lignesdeniveau > v.z);}),pal())); 
j'obtiens la figure ci-contre. Ce qui est étonnant c'est que la couleur pal[0] est utilisée en dernier.
Il me reste à faire apparaitre le quadrillage.

Maurice
pas si mal ...
pas si mal ...
Capture-2.png (32.98 Kio) Consulté 1791 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
rebouxo
Modérateur honoraire
Modérateur honoraire
Messages : 6962
Inscription : mercredi 15 février 2006, 13:18
Localisation : le havre

Re: surface et couleurs

Message non lu par rebouxo »

Et en mettant opacity à 0.5 ?

Olivier
A line is a point that went for a walk. Paul Klee.
Par solidarité, pas de MP.
maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: surface et couleurs

Message non lu par maurice »

Bonsoir,

j'ai ajouté les points :

Code : Tout sélectionner

dot("$M$",(8,9,f((8,9))),N);
dot("$P$",(5,11,f((5,11))),N);
dot("$R$",(4,4,f((4,4))),N);
Et deux remarques (questions) me viennent à l'esprit :
1) Pour la position, seule N convient, sinon les labels sont sous la surface et cachés (au moins en partie)
2) UnFill ne travaille pas en 3D ?...

Merci

Maurice

PS : Je m'en vais essayer avec scale3()*unitsphere pour changer les dot
P entier R caché
P entier R caché
Capture-1.png (21.43 Kio) Consulté 1774 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
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: surface et couleurs

Message non lu par GMaths »

1) Pour la position, seule N convient, sinon les labels sont sous la surface et cachés (au moins en partie)
Si tu veux aligner dans l'espace, X, Y, Z peuvent t'être utiles.

Tente ceci :

Code : Tout sélectionner

align=X+Y+Z
2) UnFill ne travaille pas en 3D ?...
sans avoir vérifié : de la 3D avec settings.render=0, si, cela doit fonctionner.

Mais sinon... que voudrais-tu que cela donne en prc ou opengl ?
maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: surface et couleurs

Message non lu par maurice »

Bonsoir,
GMaths a écrit :
1) Pour la position, seule N convient, sinon les labels sont sous la surface et cachés (au moins en partie)
Si tu veux aligner dans l'espace, X, Y, Z peuvent t'être utiles.

Tente ceci :

Code : Tout sélectionner

align=X+Y+Z
Je vais tenter, merci.
GMaths a écrit :
2) UnFill ne travaille pas en 3D ?...
sans avoir vérifié : de la 3D avec settings.render=0, si, cela doit fonctionner.

Mais sinon... que voudrais-tu que cela donne en prc ou opengl ?
Je cherche juste à imiter la figure du premier post.

J'ai ajouté :

Code : Tout sélectionner

void pointblanc(string s, pair z, real f(pair z)) {
	draw(shift((z.x,z.y,f(z)))*scale(0.15,0.15,4)*unitsphere, white, nolight);
	label(s, (z.x,z.y,f(z)), 2*N);
}

pointblanc("$M$", (8,9), f);
pointblanc("$P$", (5,11), f);
pointblanc("$R$", (4,4), f);
Je pense qu'on peut améliorer tout ça et pouquoi pas de l'automatiser.
Je vais y réfléchir.

Voici ce que j'obtiens en pièce jointe. A comparer avec le modèle ... pas si mal ?

Maurice
pas si mal ?<br />Bac TES spé Asie2004
pas si mal ?
Bac TES spé Asie2004
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