<<

. 4
( 11 .)



>>

zur Behandlung von Lichtre¬‚exen fur die Facetten und die Kanten unterschiedlich
¨
sind. Wir konnen das Re¬‚ex-Verhalten wiederum mit dem ™set™-Befehl einstellen.
Hier zwei verschiedene M¨glichkeiten:
o

set(h,™FaceLighting™,™flat™,...
™EdgeLighting™,™flat™);
input(™Druecke RETURN™)
set(h,™FaceLighting™,™phong™,...
™EdgeLighting™,™phong™);

¨
Ein Uberblick uber die vielen weiteren M¨glichkeiten, die Ober¬‚¨cheneigenschaf-
o a
¨
ten einzustellen ¬ndet sich unter

http://www.mathworks.com/access/helpdesk/help/techdoc/ref/surface_props.shtml

Schliesslich kann man die Achsen komplett abschalten, um die Fl¨che ganz allein
a
darzustellen

axis vis3d off
input(™Druecke RETURN™)

Als letzten Punkt betrachten wir noch die Einstellung des Beobachtungspunktes
(™viewpoint™). Wir nehmen dazu noch einmal unsere zweite Funktion

surf(X,Y,Z2);
input(™Druecke RETURN™)
Einfuhrung in Matlab 21
¨




Der Viewpoint wird uber zwei Winkel de¬niert:
¨
Azimuth = Rotation in der (x,y)-Ebene
Elevation = Neigewinkel bzgl. der (x,y)-Ebene
Am einfachsten kann man diese mit der Maus direkt in der Gra¬k einstellen.
Dazu klickt man auf das Rotations-Symbol (ganz rechts in der Symvbolleiste),
bewegt die Maus in die Gra¬k, h¨lt die rechte Taste gedruckt und kann nun den
a ¨
Viewpoint verdrehens.
W¨hrend des Drehens werden die Azimuth und Elevation-Werte im Gra¬k-
a
Fenster angezeigt.
Will man diese Werte (zu Beispiel aus einem M-File) uber eine Anweisung
¨
angeben, so kann man das mit ™view™ machen. Dabei muss ein Vektor mit den
zwei Werten [Azimuth, Elevation] ubergeben werden.
¨

view([-12 52])

1.3.4 (*) Handle-Graphics
Die Handle-Graphics bieten die M¨glichkeit, Eigenschaften von Gra¬ken in MAT-
o
LAB uber die Standard-Befehle hinaus direkt zu manipulieren. Wir wollen hier
¨
zun¨chst das allgemeine Konzept kurz erl¨utern und dann mit einigen Anwen-
a a
dungsbeispielen illustrieren. Naturlich kann dieses M-File nur einen kleinen Ein-
¨
blick in die M¨glichkeiten der Handle-Graphics geben.
o
Jedes gra¬sche Objekt besteht aus einer Reihe von Komponenten, wie z.B.
dem Gra¬kfenster (™¬gure™), den Koordinatenachsen (™axes™), einzelnen gra¬schen
Objekten (z.B. Linien ™line™, Fl¨chen ™surface™) und weiteren Objekten wie z.B.
a
Lichtquellen ™light™. Zudem besitzt jede Gra¬k die Komponente ™root™, die den
gesamten Bildschirm symbolisiert. Der ™Handle™ bietet nun die M¨glichkeit, jedes
o
dieser Objekte einzeln anzusprechen und zu manipulieren.
Um dies zu illustrieren, beginnen wir mit einem kleinen Beispiel:

t = [0:10];
plot(t,t.^2,™o-™)
input(™Druecke RETURN™)

Den Handle auf diese Gra¬k erhalten wir mit dem Befehl

h = findobj

der sich immer auf die zuletzt erzeugte Gra¬k bezieht.
Die Werte in h sind Zeiger auf die Komponenten der Gra¬k.
Die Bedeutung der Komponenten erh¨lt man mit dem Befehl
a
22 Einfuhrung in Matlab
¨




get(h,™type™)
input(™Druecke RETURN™)

Wir haben in dieser Gra¬k also die Komponenten
h(1) = root = Bildschirm
h(2) = ¬gure = Gra¬kfenster
h(3) = axes = Koordinatenachsen
h(4) = line = Linie (inklusive der Markierungen)
Mit dem ™set™-Befehl kann man diese Komponenten nun manipulieren. Gibt man
nur

set(h(3))

ein, so erh¨lt man eine Liste der Eigenschaften mitsamt der m¨glichen Einstel-
a o
lungen. Die Voreinstellungen sind in geschweiften Klammern angegeben

input(™Druecke RETURN™)
set(h(4))

Alle Eigenschaften in dieser ziemliech grossen und unubersichtlichen Liste k¨nnen
o
¨
nun direkr manipuliert werden. Wir illustrieren dies anhand der Linie und wollen
dort zun¨chst die Markierungen ™Marker™ ver¨ndern. Mit
a a

input(™Druecke RETURN™)
set(h(4),™Marker™)

erhalt man eine Liste der moglichen Einstellungen. Wir w¨hlen nun z.B. Quadrate
a
¨ ¨
statt der vorhandenen Kreise

set(h(4),™Marker™, ™square™)

und ¨ndern auch noch ihre Gr¨sse
a o

set(h(4),™MarkerSize™, 16)

Diese beiden Anweisungen k¨nnte man auch mittels
o

set(h(4),™Marker™, ™square™, ™MarkerSize™, 16)

in einer Anweisung zusammenfassen.
Das Gegenstuck zu ™set™ ist die ™get™-Anweisung, mit der man Eigenschaften
¨
ermitteln kann:

get(h(4),™MarkerSize™)
input(™Druecke RETURN™)
Einfuhrung in Matlab 23
¨




Handles konnen nicht nur uber ™¬ndobj™ erhalten werden. Jede Gra¬k-Anweisung
¨ ¨
gibt als Funktionswert einen Handle auf das erzeugte Objekt zuruck:
¨

h1 = plot(t,sqrt(t),™-™)

Allerdings erh¨lt man hier keinen Vektor von Objekten, sondern nur ein einzelnes
a
Objekt, n¨mlich gerade das mit dem Befehl erzeugt; in diesem Beispiel also eine
a
Linie.

get(h1,™Type™)
input(™Druecke RETURN™)

Neben der Einstellung verschiedenster Parameter k¨nnen Handles auch dazu be-
o
nutzt werden, Gra¬kobjekte wieder zu entfernen. Als Beispiel betrachten wir die
3d Gra¬k mit Lichte¬ekten aus der Beschreibung zuvor, die wir hier noch einmal
erzeugen.

[X,Y] = meshgrid(-8:.5:8,-8:.5:8);
Z = 1-(X.^2+Y.^2);
C = 2.*sqrt(X.^2 + Y.^2);
surf(X,Y,Z,C);
colormap(hot);
hs = findobj(™Type™,™surface™);
set(hs, ™EdgeColor™,™interp™,...
™FaceColor™,™interp™,...
™FaceLighting™,™phong™,...
™EdgeLighting™,™phong™);
input(™Druecke RETURN™);

Jetzt k¨nnen wir auch die Bedeutung dieser Befehle besser verstehen; ausserdem
o
sieht man hier eine Variante der ™¬ndobj™-Anweisung, die durch Angabe des Typs
™surface™ nur den Handle des Surface-Objekts liefert.
Mit der ™light™-Anweisung k¨nnen wir nun Lichtquellen platzieren. Wir spei-
o
chern beim Einschalten den Handle in der Variable lh

lh = light(™Position™,[-3 -1 3]);

lh ist - wie zu erwarten - ein Handle vom Typ ™light™

get(lh, ™Type™)
input(™Druecke RETURN™);

Jedes gra¬sche Objekt kann mit dem Befehl ™delete™ aus der Gra¬k gel¨scht wer-
o
den. Zum Abschalten sagt man also einfach
24 Einfuhrung in Matlab
¨




delete(lh)
input(™Druecke RETURN™);

Wenn h ein Handle auf ein Gra¬kfenster (Typ ™¬gure™) ist, kann das zugeh¨rige
o
Fenster mit ™close(h)™ geschlossen werden.

close(h(2))

Wenn man die Handle-Graphics verwenden will, emp¬ehlt es sich, immer gleich
nach Erzeugen der Gra¬k einen Handle auf die Gra¬k zu speichern.
Es gibt allerdings einige globale Variablen, die (falls eine Gra¬k vorhanden
ist) Handles gewisser Objekte enthalten:
gca = Handle der aktuellen Achsen
gcf = Handle des aktuellen Gra¬kfensters
gco = Handle des aktuellen Gra¬kobjektes (Linie, Fl¨che etc.)
a
Die einzelnen Objekte sind nicht einfach ungeordnet gespeichert, sondern nach
einer Ordnung, der sogenannten ™Hierarchie™:

root
|
|
|
figure
|
|---------
| |
axes Menueleisten
|
|--------------------------------------------------------------
| | |
line surface light ... (weitere Grafikobjekte)

Die tiefer liegenden Objekte werden dabei als Kinder ™children™ der daruber-
¨
liegenden Objekte bezeichnet.
Diese Hierarchie wird von einigen Eigneschaften verwendet. Als Beispiel be-
trachten wir die ™nextplot™ Eigenschaft des ™axes™-Objektes

surf(X,Y,Z,C);
set(gca,™nextplot™)

Hier gibt es die Einstellungen add, replace (Voerinstellung) und replacechildren
Einfuhrung in Matlab 25
¨




™add™ entspricht dem ™hold on™ Modus wahrend ™replace™ dem ™hold o¬™ Modus
¨
entspricht.
Bei ™replacechildren™ wird beim Zeichnen eines neuen Gra¬kobjektes jeweils
das Alte gel¨scht, wobei die Achsen aber erhalten bleiben.

<<

. 4
( 11 .)



>>