Graphics Reference
In-Depth Information
ten - werden zusammengeschoben und dieses neue Gebilde wird zeilenweise als
„Datenstruktur“ beschrieben (Abb. 6.3 ).
Die Verwendung von Strukturen empfiehlt sich, wenn eine einzelne Variable
mehrere zusammengehörige Informationen enthalten soll. Mit VB.Net-Code sieht
die Deklaration dieser Struktur folgendermaßen aus, ein Array ist damit allerdings
noch nicht festgelegt:
Public Structure Node
' beliebiger Struktur-Name
Dim Num As Integer
' Knoten-Nr
Dim X As Single
'
X-
Dim Y As Single
' globale Y-Koordinaten
Dim Z As Single
'
Z-
Dim sicht As Boolean
' =T wenn sichtbar, sonst =F
Dim h As Short
' h- & v-
Dim v As Short
' Projektions-Koordinaten für Bild
End Structure
Im Programm wird das Array Knoten() durch folgende Anweisung zwar initiali-
siert, belegt aber immer noch keinen Speicherplatz:
Public Knoten() As Node ' Initialisieren "Knoten"-Arrays
Erst wenn die Anzahl Anz der Knotendaten bekannt ist, erfolgt mit der ReDim -
Anweisung die physikalische Belegung von Speicherplatz:
Anz = 4
ReDim Knoten(Anz) ' festlegen aktuelle Größe
Knoten() ist nun ein 1-dimensionales Array mit 5 Elementen (0-4) und jedes seiner
Elemente ist 22 Byte lang. Die Elemente selbst sind wieder aneinandergereiht und
sequenziell gespeichert.
Kommen wir wieder zurück zur Adressberechnung. Um die Daten des i-ten
Knotens in dem 1-dimensional gespeicherten Array zu bekommen, findet man,
d. h. der Programmcode berechnet, den Anfang des i-ten Elements als Vielfaches
von 22 Byte, also bei Byte kAnf D 0 , D 22 , D 44 , usw. Nur diese einfache
Adresse kAnf D i 22 muss zur Laufzeit des Programms berechnet werden. Die
weiteren Daten des i-ten Elements kann bereits der Compiler während der Pro-
grammübersetzung an die Startadresse kAnf des Elements binden, z. B. für i
D 3
ist kAnf D 3 22 D 66 :
Knoten(3).Num = kAnf + 0
.X = kAnf + 4
.Y = kAnf + 8
.Z = kAnf + 12
.sicht = kAnf + 16
.h = kAnf + 18
.v = kAnf + 20
In diesen Ausdrücken ist keine Multiplikation mehr enthalten und entsprechend
schneller werden die Daten bereitgestellt. Bei entsprechend großen Grafiken sind
solche Adressberechnungen vom Programm viele Millionen Mal durchzuführen.
Hinsichtlich der Rechenzeit lohnt es sich deshalb immer, zuerst eine ausgefeilte
Datenstruktur zu erstellen.
Search WWH ::




Custom Search