3 Scilab | |
→ | 3.12 Plotten |
Der Befehl
plot3d(x, y, z [, Key=Value]); plot3d(xf, yf, zf [, Key=Value]);
dient zum 3D-Plotten.
Für den ersten Befehl ist x ein Vektor mit nx Elementen und y ein Vektor mit ny Elementen. Die Matrix z mit den Funktionswerten über der x/y-Ebene hat nx Zeilen und ny Spalten.
Der zweite Befehl zeichnet eine Folge von 3D-Polygonen, Dabei
enthalten die Matrizen xf, yf und zf die
Koordinaten der Polygonpunkte.
Jede Matrixspalte enthält einen Polygonzug, die Polygonpunkte sthen
innerhalb der Spalte untereinander.
Mit den optionalen Key=Value-Paaren kann der Plot konfiguriert werden, folgende Keys können verwendet werden:
0 | aktuelle Skalierung beibehalten, keine Neuberechung. |
1 | Verwendung von ebox, Neuskalierung nur bei Bedarf |
2 | Verwendung der x/y/z-Daten, Neuskalierung nur bei Bedarf. |
3 | Verwendung von ebox, isometrische Darstellung. |
4 | Verwendung der x/y/z-Daten, isometrische Darstellung. |
5 | Verwendung von ebox, erweiterte isometrische Darstellung. |
6 | Verwendung der x/y/z-Daten, erweiterte isometrische Darstellung. |
0 | Keine Umrandung. |
1 | Nicht implementiert, wie 0 |
2 | Nur Achsen an der Oberfläche. |
3 | Box um Oberfläche und Beschriftungen. |
4 | Box um Oberfläche, Beschriftung und Skalen. |
Im Beispiel wird die Funktion zur Berechnung der Parallelschaltung von zwei Widerständen so variiert, dass sie als Parameter zwei Zeilenvektoren vearbeitet und als Ergebnis eine Matrix erzeugt.
function [y] = parallel(a,b)
[za, sa] = size(a);
[zb, sb] = size(b);
y = zeros(sa, sb);
for i = [1:1:sa] do
for j = [1:1:sb] do
if a(i) > 0 then
if b(i) > 0 then
y(i,j) = (a(i) * b(j))/(a(i) + b(j));
end
end
end
end
endfunction
x = linspace(0,10,51);
y = linspace(0,10,51);
clf();
plot3d(x, y, parallel(x,y), theta=-60, alpha=60, flag=[5 6 4]);