Comportement bizarre de surface

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.
dmalik
Utilisateur confirmé
Utilisateur confirmé
Messages : 18
Inscription : dimanche 07 octobre 2007, 22:28

[Résolu] Comportement bizarre de surface

Message par dmalik »

Lors de l'élaboration d'une figure 3D je me heurte à un comportement bizarre de la commande surface.
Soit un path3 que je colorie avec surface .
Voici un reste du code qui permettra de comprendre :

Code : Tout sélectionner

settings.outformat="pdf";
settings.prc=false;
import graph3;
import grid3;
import contour;
size(9cm,0);
size3(5cm,6cm,4cm,IgnoreAspect);

currentprojection=orthographic(5,5,100);
limits((1,0,0),(10,10,25));

//il ya a bien inversion x et y pour faire comme la source de l'exercice
xaxis3(scale(1.5)*Label("$y$",position=MidPoint,align=SE),YZEquals(1,0),OutTicks(Step=1));
yaxis3(scale(1.5)*Label("$x$",position=MidPoint,align=8X),XZEquals(0,0),OutTicks(Step=1,Label(align=X)));
zaxis3(scale(1.5)*Label("$z$",position=EndPoint,align=3N+E),Bounds(Min,Max),InTicks(Step=5,Label(align=Y)));

//plan z0;
real z0=5;
real k=2; //le pas est volontairement grand pour comprendre

//pour x=10 calcul de l'ordonnée y0
real y0=exp(z0/10);
//pour un meilleur repérage je nomme des points
dot(scale(1.5)*Label("A",align=Z), (10,5/(log(10)),5), purple);
dot(scale(1.5)*Label("B",align=Z), (0,10,5), purple);
dot(scale(1.5)*Label("C",align=Z), (10,0,5), purple);
dot(scale(1.5)*Label("D",align=Z), (y0,10,5), purple);
dot(scale(1.5)*Label("O",align=Z), (0,0,5), purple);

 path3 plan1;
 plan1=(0,0,z0)--(0,10,z0)--(y0,10,5)--(exp(z0/9.9),9.9,z0);
 
 int i=1;
 real xi;
 real yi;
  	//plan1=plan1--(1.8,8.8,5)--(2.3,7.6,5)--(3.1,5.1,5)--(1.2,8.2,5);
    	do {
  	xi=10-k*i;
  	dot(scale(1)*Label("",align=Z), (exp(z0/xi),10-k*i,z0), purple);
    	plan1=plan1--(exp(z0/xi),10-k*i,z0);
    	i=i+1;
    	}
    	while (xi>5/(log(10)));
    	
  plan1=plan1--(10,5/(log(10)),5)--(10,0,z0)--cycle;
// Je trace le contour de ma surface !
draw(plan1,purple);
//Je colorie la surface plane	
draw(surface(plan1),yellow+opacity(.5));
Dès que je peux uploader une image je le ferais.
Mais la surface colorée dépasse les limites du path3 dans la partie "concave".
De fait je cherche à colorer la partie qui pourrait etre :
dans une feuille carrée, 1 coté =axe des y
l'axe des x est au milieu.
je trace une courbe log et je découpe et jette la partie en dessous de cette courbe.
Le papier qui me reste je le colorie.
La fonction surface colorie en dehors du papier le long de la fonction log !
J'espère m'être bien fait comprendre
où est l'erreur ?
Qu'est-ce qui m'a échappé ?
merci
daniel
Dernière modification par dmalik le mercredi 11 février 2009, 22:06, modifié 1 fois.

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

Re: [asymptote] comportement bizarre de surface

Message par GMaths »

dmalik a écrit :J'espère m'être bien fait comprendre
mais alors... pas du tout en ce qui me concerne !
C'est du charabia pour moi, désolé.
Mais peut-être que d'autres auront compris ce que tu tentes de faire.
J'ai testé la figure... et ce que j'obtiens ne ressemble à rien.

Le mieux ce serait de dire ce que mathématiquement tu veux faire... sans évoquer Asymptote.

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

Re: [asymptote] comportement bizarre de surface

Message par OG »

Bonjour

Je rejoins Gaëtan.

Une figure 3D (qui a l'air d'être plan) est dessinée mais je n'ai rien compris (il faut dire que faire grève est éprouvant). Concernant les surfaces hormis la possibilité de définir "à la main" une surface lisse/régulière le seul moyen actuel est la création via une fonction sur une grille (on peut tricher dans certain cas mais actuellement il n'y a pas de fonction asymptote qui permet de tracer une surface $f(x,y,z)$ $(x,y)$ décrivant un domaine) (il paraît que je dois travailler dessus, j'aurai du me taire un certain jour).

On peut à la main programmer un dessin de surfaces mais style carreau plan donc avec des angles.

O.G.

dmalik
Utilisateur confirmé
Utilisateur confirmé
Messages : 18
Inscription : dimanche 07 octobre 2007, 22:28

Re: [Asymptote] Comportement bizarre de surface

Message par dmalik »

Bon je recommence et je prend un exemple plus simple et puisque je peux je vais joindre les images !
Voici le code :

Code : Tout sélectionner

settings.outformat="pdf";
settings.prc=false;
import graph3;
size(0,0); unitsize(2cm); 

currentprojection=orthographic(5,5,100);//pour avoir une vue de dessus qui permet de mieux comprendre
limits((1,0,0),(10,10,25));

triple O=(0,0,0);
triple A=(10,0,0);
triple B=(10,1,0);
triple C=(7,1,0);
triple D=(2,2,0);
triple E=(1,7,0);
triple F=(1,10,0);
triple G=(0,10,0);

path3 plan1;
 
    	
  plan1=O--A--B--C--D--E--F--G--cycle;
// Je trace le contour de ma surface !
draw(plan1,purple);
//Je colorie la surface plane	
draw(surface(plan1),yellow+opacity(.5));
et voici le résultat :

[attachment=0]test_surface.png[/attachment]


On voit bien que le jaune déborde de la ligne !

Je viens de trouver sur le forum asymptote la réponse à une question qui vient d'être postée aujourd'hui.
Quelle chance !
Il faut mettre

Code : Tout sélectionner

draw(planar(plan1),yellow+opacity(.5));
Merci !
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.