Scilab Function plot3d - représentation d'une surface en 3D
Sequence d'appel
- plot3d(x,y,z,[theta,alpha,leg,flag,ebox])
- plot3d(x,y,z,<opt_args>)
-
- plot3d(xf,yf,zf,[theta,alpha,leg,flag,ebox])
- plot3d(xf,yf,zf,<opt_args>)
-
- plot3d(xf,yf,list(zf,colors),[theta,alpha,leg,flag,ebox])
- plot3d(xf,yf,list(zf,colors),<opt_args>)
Parametres
- x,y
: vecteurs lignes de taille n1 et n2 (coordonnées sur les axes x et y). Ces coordonnées doivent être monotones.
- z
: matrice de taille (n1,n2). z(i,j) est la hauteur d'une surface non paramétrique au point (x(i),y(j)).
- xf,yf,zf
: matrices de taille (nf,n). Elles définissent les facettes utilisées pour dessiner la surface. Chaque facette i est définie par un polygone à nf points. Les coordonnées x, y et z des points de la facette numéro i sont donnés par xf(:,i), yf(:,i) et zf(:,i).
- colors
: un vecteur de taille n donnant la couleur de chaque facette ou une matrice de taille (nf,n) donnant la couleur de chaque point de la facette (dans ce cas la couleur est interpolée dans la facette)
- <opt_args>
: une suite d'affectations key1=value1, key2=value2, ... où key1,key2, ... peuvent prendre les valeurs theta,alpha,leg, flag, ebox,zlev (voir ci-dessous). Dans ce cas, l'ordre n'a pas de signification particulière.
- theta, alpha
: valeurs réelles donnant (en degrés) les coordonnées sphériques du point d'observation.
- leg
: chaîne de caractères définissant la légende pour chaque axe avec @ comme séparateur, par exemple "X@Y@Z".
- flag
: un vecteur réel de taille 3 flag=[mode,type,box].
- mode
: chaîne de caractères (traitement des parties cachées).
- mode>0
Les parties cachées de la surface sont enlevées et le "dessous" de la surface est d'une couleur uniforme d'indice mode dans la table de couleurs courante.
- mode=0
Les parties cachées de la surface sont dessinées.
- mode<0
Uniquement le "dessous" de la surface est dessiné et rempli avec une couleur ou un motif uniforme d'indice -mode. Voir xset() pour la signification des indices.
- type
: un entier (type d'échelle).
- type=0
Le dessin est fait avec l'échelle 3D courante (définie par un appel précédent à param3d, plot3d, contour ou plot3d1).
- type=1
Échelle où la boîte 3D est utilisée en totalité, les limites sont éventuellement spécifiées par l'argument optionnel ebox.
- type=2
Échelle où la boîte 3D est utilisée en totalité, les limites sont calculées à partir des données.
- type=3
Échelle isométrique 3D où les bornes de la boîte 3D sont données par l'argument ebox, mode similaire à type=1
- type=4
Échelle isométrique 3D où les bornes de la boîte 3D sont calculées à partir des données, mode similaire à type=2
- type=5
Échelle isométrique 3D "étendue" (occupation maximum de l'espace), les bornes de la boîte 3D sont données par l'argument ebox, mode similaire à type=1
- type=6
Échelle isométrique 3D "étendue" (occupation maximum de l'espace), les bornes de la boîte 3D sont calculées à partir des données, mode similaire à type=2.
- box
: un entier (cadre autour du dessin).
- box=0
Pas de cadre autour du dessin.
- box=1
Pas implémenté pour l'instant (identique à box=0).
- box=2
Uniquement les axes (trièdre i,j,k) sont dessinés derrière la surface
- box=3
Une boîte est dessinée autour du dessin et les légendes des axes sont ajoutées.
- box=4
Sont dessinés, une boîte autour du dessin, les légendes des axes et le trièdre derrière la surface (identique à mode=3 + mode=2)
- ebox
: utilisé quand type dans flag vaut 1. Spécifie les limites de la boîte 3D du dessin sous forme du vecteur [xmin,xmax,ymin,ymax,zmin,zmax].
Description
plot3d(x,y,z,[theta,alpha,leg,flag,ebox]) dessine la surface non-paramétrique
z=f(x,y).
plot3d(xf,yf,zf,[theta,alpha,leg ,flag,ebox]) dessine une surface
définie par un ensemble de facettes. On peut représenter des surfaces multiples
xf, yf et zf en assemblant les matrices sous la forme
[xf1 xf2 ...], [yf1 yf2 ...] et [zf1 zf2 ...].
On peut donner une couleur individuelle à chaque facette en mettant list(zf,colors) à la place de zf, où colors est un vecteur de taille n. Si colors(i) est
positif il donne la couleur de la facette i et le contour de la facette est dessiné avec le style courant de ligne et de couleur.
Si colors(i) est négatif, la couleur d'indice -colors(i) est utilisée et
la frontière de la facette n'est pas dessinée. Utiliser xset() pour voir les indices des couleurs.
Il est aussi possible d'avoir des couleurs interpolées sur les facettes. Pour cela remplacer colors par une matrice de taille nfxn donnant la couleur de chaque point des facettes.
Dans ce cas les valeurs positives signifient que le contour des facettes n'est pas dessiné.
Les arguments optionnels theta,alpha,leg ,flag,ebox, peuvent être passés
sous la forme key1=value1,
key2=value2, ... Dans ce cas, l'ordre n'a pas de signification.
Utiliser éventuellement la fonction genfac3d pour calculer les facettes (à 4 points)
de la surface non-paramétrique z=f(x,y). eval3dp peut être utilisée pour les surfaces
paramétriques.
Taper plot3d() pour voir une démonstration de la fonction.
Exemples
// simple surface z=f(x,y)
t=[0:0.3:2*%pi]'; z=sin(t)*cos(t');
plot3d(t,t,z)
// même surface en utilisant genfac3d au préalable
[xx,yy,zz]=genfac3d(t,t,z);
xbasc()
plot3d(xx,yy,zz)
// surfaces multiples
xbasc()
plot3d([xx xx],[yy yy],[zz 4+zz])
// surfaces multiples utilisant des couleurs
xbasc()
plot3d([xx xx],[yy yy],list([zz zz+4],[4*ones(1,400) 5*ones(1,400)]))
// changement du point de vue et des légendes
xbasc()
plot3d(1:10,1:20,10*rand(10,20),35,45,"X@Y@Z",[2,2,3])
// une sphère
deff("[x,y,z]=sph(alp,tet)",["x=r*cos(alp).*cos(tet)+orig(1)*ones(tet)";..
"y=r*cos(alp).*sin(tet)+orig(2)*ones(tet)";..
"z=r*sin(alp)+orig(3)*ones(tet)"]);
r=1; orig=[0 0 0];
[xx,yy,zz]=eval3dp(sph,linspace(-%pi/2,%pi/2,40),linspace(0,%pi*2,20));
xbasc();plot3d(xx,yy,zz)
xbasc();xset('colormap',hotcolormap(128));
r=0.3;orig=[1.5 0 0];
[xx1,yy1,zz1]=eval3dp(sph,linspace(-%pi/2,%pi/2,40),linspace(0,%pi*2,20));
cc=(xx+zz+2)*32;cc1=(xx1-orig(1)+zz1/r+2)*32;
xbasc();plot3d1([xx xx1],[yy yy1],list([zz,zz1],[cc cc1]),70,80)
xbasc();plot3d1([xx xx1],[yy yy1],list([zz,zz1],[cc cc1]),theta=70,alpha=80,flag=[5,6,3])
Voir aussi
Auteur