découpage d'une surface avec scilab
Bonjour
Quelqu'un sait-il comment ne dessiner qu'une partie d'une surface avec scilab ?
Par exemple je voudrais tracer la surface $z=x^2+y^2$ avec $x\geq 1$, $y\geq 1$ et $3x+4y\leq 12$ ou encore $z=xy$ sur le disque unité.
J'ai lu les documentations mais je n'ai rien trouvé dessus.
Merci
Quelqu'un sait-il comment ne dessiner qu'une partie d'une surface avec scilab ?
Par exemple je voudrais tracer la surface $z=x^2+y^2$ avec $x\geq 1$, $y\geq 1$ et $3x+4y\leq 12$ ou encore $z=xy$ sur le disque unité.
J'ai lu les documentations mais je n'ai rien trouvé dessus.
Merci
Réponses
-
Il faut traiter ta surface comme une surface paramétrée : d'abord paramétrer le domaine qui t'intéresse puis passer par la manipulation indiquée au point 2.2 de ce document (par exemple).
-
Merci de votre réponse rapide.
Je bloque toujours pour le premier exemple. Tout ce que j'ai trouvé pour l'instant est :function [x,y,z]=parabolor(u,v) x=u y=v z=((u-1)^2+(v-2)^2-4).*bool2s(2*u+3*v<=6) endfunction u=[0:0.1:3]; v=[0:0.1:2]; [x,y,z]=eval3dp(parabolor,u,v); plot3d(x,y,z) a=gca();//"axes" courant p=a.children(1);//Plot3d p.color_mode=10;//dessus bleu
Le résultat est plutôt moche.
J'aurais aimé pouvoir écrire :v=[0:0.1:2-u]
mais scilab n'est pas d'accord.
J'ai trouvé un peu mieux avec :deff('[z]=f(x,y)',['z=(x-1)^2+(y-2)^2-4']); deff('[z]=b(x,y)',['z=bool2s(2*x+3*y<=6)']); x=[0:0.1:3]; y=[0:0.1:2]; z=eval3d(f,x,y) bo=eval3d(b,x,y) [xx,yy,zz]=genfac3d(x,y,z,bo); plot3d(xx,yy,zz) a=gca();//"axes" courant p=a.children(1);//Plot3d p.color_mode=10;//dessus bleu
Mais le dernier coté est toujours moche.
Y a-t-il un moyen de le "lisser" ?
Pour le deuxième exemple j'ai trouvé facilement :function [x,y,z]=paraboloh(rho,theta) x=rho.*cos(theta) y=rho.*sin(theta) z=(rho^2).*sin(2*theta)/2 endfunction rho=[0:0.1:1]; theta=[0:0.1:2*3.15]; [x,y,z]=eval3dp(paraboloh,rho,theta); plot3d(x,y,z) a=gca();//"axes" courant p=a.children(1);//Plot3d p.color_mode=10;//dessus bleu
Merci d'avance -
Une toute petite modification de ton premier code suffit. Comme je l'ai dit, il faut paramétrer la surface, donc d'abord le triangle où sont x et y :
function [x,y,z]=parabolor(u,v) x=5*u/3 y=5*v.*(1-u)/4 z=x.^2+y.^2 endfunction u=linspace(0,1,50); v=u; [x,y,z]=eval3dp(parabolor,u,v); plot3d(x,y,z) a=gca();//"axes" courant p=a.children(1);//Plot3d p.color_mode=10;//dessus bleu
Ici, c'est l'exemple de ton premier post, pas du second -
Merci.
C'était pourtant facile.
Connectez-vous ou Inscrivez-vous pour répondre.
Bonjour!
Catégories
- 165.8K Toutes les catégories
- 69 Collège/Lycée
- 22.2K Algèbre
- 37.7K Analyse
- 6.3K Arithmétique
- 61 Catégories et structures
- 1.1K Combinatoire et Graphes
- 13 Sciences des données
- 5.1K Concours et Examens
- 28 CultureMath
- 51 Enseignement à distance
- 2.9K Fondements et Logique
- 10.8K Géométrie
- 86 Géométrie différentielle
- 1.1K Histoire des Mathématiques
- 83 Informatique théorique
- 3.9K LaTeX
- 39K Les-mathématiques
- 3.5K Livres, articles, revues, (...)
- 2.7K Logiciels pour les mathématiques
- 30 Mathématiques et finance
- 345 Mathématiques et Physique
- 5K Mathématiques et Société
- 3.4K Pédagogie, enseignement, orientation
- 10.1K Probabilités, théorie de la mesure
- 808 Shtam
- 4.2K Statistiques
- 3.8K Topologie
- 1.4K Vie du Forum et de ses membres