Peter Lorenz English smaller fonts Simulation und Animation

2.1.3. Animationszeit und Animationskommandos


Im Run-Modus beginnt eine Animationszeit oder -uhr zu laufen. Sie läuft mit konstantem, aber einstellbarem Tempo. Das Animationstracefile (ATF) enthält Animationskommandos, die im Run-Modus abgearbeitet werden. Sie betreffen die Animationszeit, die Objekte, deren Positionen, Zustandsänderungen und Bewegungen. Sie betreffen weiterhin die Nachrichten, Balken und Diagramme, die sich während des Animationslaufes ändern.
Der vorliegende Abschnitt behandelt Animationskommandos zur Erzeugung, Platzierung, Bewegung, Rotation und Vernichtung von Objekten.

Run-Modus von Proof AnimationTop Line

Der Run-Modus dient dem Start und der Steuerung eines Animationslaufes. Man kann einen Animationslauf als sequentielle Abarbeitung eines ATF verstehen. Der Lauf ist beendet, wenn das abschließende End-Kommando verarbeitet wurde. Dem folgenden Bildausschnitt kann man entnehmen, wie eine laufende Animation interaktiv gesteuert werden kann.

Run-Menu

Menü- und Werkzeugleiste im Run-Modus

Im Run-Mode bietet die Werkzeugleiste folgende Funktionen an:

Start animation Start
startet die Animation vom Beginn oder vom Zeitpunkt der letzten Stop-Unterbrechung.
Stop Stop
erscheint während eines Laufes in roter Farbe und wird benutzt, um einen Animationslauf zu stoppen.
Jump ahead/back in time Jump
erlaubt die Einstellung eines Zeitpunktes, an dem die Animation gestartet werden soll.
Adjust viewing speed Adjust Viewing Speed
spezifiziert das Verhältnis von Vorführ- und Realzeit. Voreingestellt ist der Wert 6. In einer Sekunde werden 6 Einheiten der Animationszeit vorgeführt.
Wenn die Einheit der Animationszeit eine Sekunde ist und dazu das Vorführtempo (Viewing Speed) 1 eingestellt wird, dann wird in einer Sekunde Realzeit eine Sekunde der Animationszeit vorgeführt.

Animationszeit und RealzeitTop Line

Für die Realitätstreue von Modellen spielt die Genauigkeit der Nachbildung der Zeit eine wichtige Rolle.

Das Simulationssystem GPSS/H, das in den folgenden Kapiteln vorgestellt wird, benutzt positive, reellwertige Zahlen zur Zeitdarstellung. Die Simulationszeit oder simulierte Zeit beginnt ihren Lauf beim Zeitpunkt Null, dem Startpunkt eines Simulationslaufes. Von dort aus schreitet sie von einem Ereigniszeitpunkt zum nächsten fort.

Die Animationszeit in Proof Animation beginnt bei Null und hat wachsende, reelle Werte. Im Unterschied zur Simulationszeit verändert sie sich während eines Animationslaufes, also im Run-Modus, in kleinen äquidistanten Schritten. Für jeden Schritt wird ein neues Bild errechnet und gezeigt. Dabei ist das Animationssystem darum bemüht, eine möglichst strenge Proportionalität zwischen Realzeit und Animationszeit einzuhalten und muss dazu bei Bildern mit sehr vielen bewegten Objekten die Bildwiederholfrequenz der Rechenleistung anpassen.

Die Einheit der Animationszeit kann frei interpretiert werden. Es ist dem Nutzer überlassen, ob er eine Sekunde, eine Minute, eine Stunde oder einen Monat als Zeiteinheit benutzt und die Animationszeit entsprechend interpretiert. Generell ist davor zu warnen, für die Simulation eine andere Interpretation der Zeiteinheit zu wählen, als für die Animation. Wenn die Zeiteinheit des Simulationsmodells als Minute interpretiert wird, sollte dieselbe Interpretation auch für die Zeiteinheit der Animation gelten.

Select the animation time unit and format

Nachdem man sich für eine bestimmte Interpretation für die Einheit der Animationszeit entschieden hat, kann man nun das Darstellungsformat dieser Zeit festlegen. Die aktuelle Animationszeit wird im Run-Modus auf der rechten Seite der der Werkzeugleiste (Toolbar) angezeigt. Das Darstellungsformat kann man im Draw-Modus wählen. Wenn man View selektiert und Toolbar Date/Time Format wählt, erhält man das nebenstehende Bild. Hier kann man nun die gewählte Zeiteinheit eintragen und eine Startzeit spezifizieren.

Der taktweise, quasistetige Lauf der Animationszeit hat gewisse Punkte, in denen das Laufzeitsystem von Proof Animation™ neue Instruktionen erhält. Diese Zeitpunkte werden durch die Time-und DT-Kommandos des ATF bestimmt.
Beim Start eines Animationslaufes beginnt die Uhr ihren Lauf beim Wert 0, und es werden erste Animationskommandos oder ATF-Kommandos verarbeitet, die am Beginn des ATF stehen. Die Kommandos können Objekte erzeugen, positionieren und in Bewegung versetzen. Das Laufzeitsystem steuert gestartete Bewegungen bis zu ihrem Ende.

Time
ist ein Kommando, das zum angegeben Zeitpunkt alle diejenigen Aktionen auslöst, welche diesem Kommando folgen, bis diese Folge vom nächsten Time- oder DT-Kommando unterbrochen wird. Seine Syntaxdarstellung lautet:
Time value
value Animationszeitpunkt, der abzuwarten ist, um die folgenden Kommandos auszuführen

DT
ist ein Kommando, das eine Zeitdifferenz oder die Länge eines Zeitintervalls angibt, das bis zur Auslösung seiner Folgekommandos abzuwarten ist. Seine Syntaxdarstellung lautet:
DT value
value Länge des Zeitintervalls bis zum Start der folgenden Anweisungen

Time und DT sind von grundlegender Bedeutung für das Verstehen von ATF und sollen deshalb an folgendem Beispiel erklärt werden:

Time 20           Bis zum Zeitpunkt 20 geschieht nichts.
Create Circle C   Ein Objekt der Klasse Circle mit Namen C wird erzeugt.
Place C at 10 20  C erscheint auf dem Bildschirm an der Stelle x=10, y=20.
DT 30             Bis zum Zeitpunkt 50 geschieht nichts.
Destroy C         C wird vernichtet und verschwindet vom Bildschirm.
End               Ende der Kommandofolge des Animationstracefiles.

Die hier benutzten ATF-Kommandos werden in den folgenden Abschnitten erklärt.

Erzeugung, Positionierung und Vernichtung von ObjektenTop Line

Im folgenden werden die weiter oben schon benutzten ATF-Kommandos zur Erzeugung, Positionierung und Vernichtung von Objekten beschrieben.

Create
ist ein Kommando zur Erzeugung eines Objektes einer im Layout definierten und damit verfügbaren Klasse. Seine Syntaxdarstellung lautet
Create classID objectID
classID Name der Klasse, von der ein Objekt erzeugt werden soll.
objectID Name oder Zahl als Identifikator des zu erzeugenden Objekts
Destroy
ist ein Kommando zur Vernichtung eines existierenden Objektes. Seine Syntaxdarstellung lautet
Destroy objectID
Place at
ist ein Kommando zur Platzierung eines Objektes an einen angegebenen Platz auf dem Bildschirm. Seine Syntaxdarstellung lautet
Place objectID at x y
x, y Koordinaten im globalen Koordinatensystem von Proof. Sie bestimmen den Ort für das Zentrum des lokalen Koordinatensystems des Objektes. Sie bestimmen den Ort für das Zentrum des lokalen Koordinatensystems des Objektes.
Es ist darauf zu achten, dass alle Kommandos nicht case-sensitiv und alle vom Nutzer gewählten Namen case-sensitiv sind. Circle, CIRCLE und circle sind also drei verschiedene Namen.
Nach seiner Erzeugung durch Create bleibt ein Objekt unsichtbar, bis es durch Place at einem Platz zugewiesen wurde. Nach Ausführung von Destroy verschwindet es wieder.

Bewegung von ObjektenTop Line

Mit den bisher eingeführten Kommandos kann man bereits die Bewegung von Objekten auf dem Bildschirm bewirken. Eine Folge von Time- und Place-at-Kommandos reicht aus, um ein Objekt in kleinen Schritten über den Bildschirm zu bewegen und damit den Eindruck kontinuierlicher Bewegung zu erwecken. Auf diese mühsame Art der Bewegungsbeschreibung ist der Benutzer von Proof Animation™ nicht angewiesen. Er kann Objekte

Objekte auf Pfaden werden im nächsten Abschnitt behandelt. Im folgenden geht es um die Bewegung zwischen zwei Punkten.

Move
ist ein Animationskommando, das (ohne Angabe einer Beschleunigung) die geradlinige, gleichförmige Bewegung eines Objektes von seinem Ausgangspunkt zu einem Zielpunkt veranlaßt. Dafür gibt es zwei verschiedene Syntaxvarianten:
Move objectID duration xtarget ytarget [relative]
Move objectID speed s xtarget ytarget [relative]

OperandErklärung
duration bestimmt die Zeitdauer der Bewegung
s bestimmt die Geschwindigkeit (Weg pro Zeit)
relative bewirkt, dass die xtarget- und ytarget-Werte nicht absolut, sondern relativ zum Ausgangspunkt genommen werden
Weitere Varianten dieses Kommandos bewirken beschleunigte Bewegungen:
Move objectID speed s acceleration a xdest ydest [relative]
Move objectID speed s1 endspeed s2 xdest ydest [relative]
Das folgende ATF benutzt dreimal das Move-Kommando. Wie man sieht, dürfen sich die Bewegungen zweier Objekte (T1 und Cnew) zeitlich überlappen.
Time 20                laesst die ersten 20 Zeiteinheiten ablaufen
Create Triangle T1     erzeugt das Dreieck T1
Place T1 20 5          setzt es auf den Punkt (20, 5)
Move T1 30 80 5        bewegt es 30 Zeiteinheiten lang zum Punkt (80, 5)
Time 30                Debug-Zwischenstop T1(x)=20+(80-20)x(10/30)=40
Time 40                T1(x)=60
Time 50                T1(x)=80
Time 70               
Move T1 20 10 15       T1 wird schraeg nach links oben bewegt
Create Circle Cnew     Cnew wird erzeugt,
Place Cnew 10 10       platziert
Move Cnew 20 80 10     und nach rechts bewegt.
Time 80
Time 90
Time 100
Destroy Cnew           Cnew wird vernichtet
End
Die Abarbeitung dieses ATF-Files setzt ein Layoutfile voraus, in dem die Klassen Triangle und Circle definiert sind. Folgendes Layoutfile eignet sich dafür:
Download Layout ATF
Define View "(Home)" center 40 30 Width 99.2969 Grid Size 1 10 Ortho Aspect 1 0.5 Speed 6
Define View "(Class)" center 0 0 Width 9.9297 Grid Size 0.1 1 Ortho
Define color Backdrop  0.8 0.749 0.549
Define color F1 0 0 0.6667
Define color F2 1 0 0
................
Color F1
Define Class Circle
Arc 4 0 0 0 360 6.2832
Fill -0.5512 -1.3024
End
Color F2
Define Class Triangle
Line 0 4 -4 -4
Line -4 -4 4 -4
Line 4 -4 0 4
Fill 0.6512 -1.8364
End
Color F7
Define Class Square
Line -1.6 1.6 -1.6 -1.6
Line -1.6 -1.6 1.6 -1.6
Line 1.6 -1.6 1.6 1.6
Line 1.6 1.6 -1.6 1.6
Fill 0.0696 -0.6932
End
Color F3
Line 0 26 86 26
Line 10 1 10 0
Line 30 1 30 0
Line 40 1 40 0
Line 50 1 50 0
Line 60 1 60 0
Text 1 1 LJ 0 -2 0
Line 86 0 0 0
Line 20 1 20 0
Text 1 1.2 LJ 9 -2 10
Line 86 26 86 0
Line 70 1 70 0
Line 80 1 80 0
Line 0 0 0 26
Line 0 10 1 10
Line 0 20 1 20
Color F2
Text 1 1.8 LJ 2 22 Layout23
Color F3
Text 1 1.2 LJ 79 -2 80
Text 1 1.2 LJ 49 -2 50
End

Es ist zu empfehlen, in den Debug-Modus von Proof zu gehen und die Abarbeitung des ATF im Einzelschrittmodus zu verfolgen.

Proof-Animationen kann man auch als Video speichern und vorführen. Wenn man hier klickt, sieht man die Animation aus dem aktuellen Beispiel.

Färben von ObjektenTop Line

Während eines Animationslaufes kann man die Farbe von Objekten verändern, z. B. um Zustandsänderungen anzuzeigen. Dazu benutzt man das Kommando Set Color.

Set Color
ist ein Kommando zum Umfärben von Objekten während eines Animationslaufes. Seine Syntaxdarstellung lautet
Set objectID Color color/Class.
OperandErklärung
objectID spezifiziert das zu färbende Objekt.
color gibt die Farbe an, für deren Codierung F1 bis F32 (Vordergrundfarben) und L1 bis L32 Hintergrundfarben) sowie Backdrop für die Farbe des Bildschirmhintergrundes zu benutzen sind. Die RGB-Komponenten dieser Farben kann man verändern, wenn man Setup->Colors selektiert.
Class bewirkt die Wiederherstellung der für die Objektklasse vordefinierten Farbe.

Um Farbwirkungen beim Aufeinandertreffen von Bildkomponenten zu verstehen, kann man sich ein Dreischichtenmodell vorstellen.

  1. In der untersten Schicht liegt die Hintergrundfarbe Backdrop. Sie wird durch die beiden darüberliegenden Schichten verdeckt.
  2. In der zweiten Schicht liegen die Bildhintergrundfarben L1 bis L32.
  3. In der obersten Schicht liegen die Vordergrundfarben F1 bis F32. Sie verdecken die Farben beider darunterliegender Schichten.

Innerhalb jeder Schicht überdeckt eine Farbe mit höherer Nummer alle Farben mit niedrigerer Nummer.

Rotation von Objekten Top Line

Objekte können auf einem festen Platz oder auch während ihrer Bewegung gedreht werden. Die Drehung oder Rotation wird durch das ATF-Kommando Rotate eingeleitet. Ähnlich wie beim Move-Kommando übernimmt das Laufzeitsystem von Proof Animation™ die Ausführung der Rotation. Sie kann zeitlich begrenzt oder unbegrenzt sein. Zeitlich unbegrenzte Rotationen enden erst mit dem Ende des Animationslaufes.

Rotate
ist ein Kommando, das die Drehung eines Objektes um das Zentrum seines lokalen Koordinatensystems startet. Die Rotationsgeschwindigkeit (Grad pro Zeiteinheit) bleibt dabei konstant. Die Syntaxdarstellung lautet:

Rotate objectID [to] angle [Time duration] [Step stepsize]
Rotate objectID [to] angle [Speed rotspeed stepsize]


OperandErklärung
to bewirkt die Rotation des Objektes von seiner aktuellen Position zu dem in angle angegebenen Winkel. Wenn man to wegläßt, wird das Objekt relativ zu seiner aktuellen Position um die angegebene Gradzahl gedreht.
angle ist der Winkel, um den das Objekt im Uhrzeigersinn zu drehen ist.
duration bestimmt die Zeitdauer der Rotation.
rotspeed bestimmt die Geschwindigkeit der Rotation in Grad pro Zeiteinheit. Wenn man Null angibt, wird eine laufende Rotation gestoppt.
stepsize bestimmt die Qualität der Rotationsdarstellung und ist mit 30 Grad voreingestellt. Wenn das zu grob ist, kann man es mit einer Angabe in diesem Operanden ändern. Es ist zu beachten, dass für jede benutzte Richtung ein Bitmap des Objekts angelegt werden muß. Zu feine Unterteilungen können ein Überlaufen des Bitmap-Speichers verursachen.
Beispiele für Rotate-Kommandos
Rotate 1 to 50           dreht Objekt 1 ohne Zeitverbrauch auf 50 Grad gegenüber der Normalstellung.
Rotate 1 -120 Time 10    dreht Objekt 1 um 120 Grad im Uhrzeigersinn und braucht dazu 10 Zeiteinheiten.
Rotate 1 -120 Speed 12   ist mit dem vorigen Kommando äquivalent.
Rotate 1 Speed 6         dreht das Objekt um 6 Grad pro Zeiteinheit, ohne dass ein Ende festliegt.
Rotate 1 Speed -1 Step 6 dreht das Objekt im Uhrzeigersinn wie einen Sekundenzeiger.

Das folgende Bildbeispiel zeigt die schematische Darstellung eines Fahrzeuges, das sich im Original horizontal über den Bildschirm bewegt. Dabei drehen sich die Räder mit einer Rotationsgeschwindigkeit, die man der Fahrgeschwindigkeit anzupassen hat.

Bild: Fahrendes Auto mit rotierenden Rädern
Download AVI LAY ATF

Trace-File-Generierung mit GPSS/H

Das folgende GPSS/H-Programmbeispiel generiert ein ATF-File mit Time-, Create-, Place-, Move- und Rotate-Anweisungen.


Auszüge für das dazu gehörige Layout-File sind im Folgenden wiedergegeben.

Color F1
Define Class Small
Fill -4.7461 3.9453
Arc 0.8 -5.5 3.5 0 360 0
Arc 1 -5.5 3.5 0 360 0
End
Color F11
Define Class Big
Fill -16.8359 8.6563
Arc 10 -12.5 8 0 360 0
End
Color F7
Define Class Medium
Fill 7.3938 5.2258
Arc 5 9.5 5.5 0 360 0
End

Download AVI LAY ATF

Animationstracefiles und andere Proof-Files

Bisher sind Layoutfile und Animationstracefile als die vielleicht wichtigsten Files vorgestellt worden, mit denen Proof Animation™ arbeitet. An dieser Stelle soll eine Übersicht über wichtige Files gegeben werden, die Proof lesen oder schreiben kann.

Name+Inhalt
Layout-FileLAY Bildhintergrund, Pfade, Objektklassen, Nachrichten, Balken und Diagramme
Animationstracefile ATF Animationskommandos, die den Ablauf einer Animation steuern
Präsentationsfile PSF Präsentationskommandos zur Gestaltung einer Präsentation
Log-FileLOG Fehlernachrichten aus dem Ablauf der Animation
LinkageFileLKG Daten über Anfangs- und Endpunkte sowie Längen von Pfaden

Die mit + markierte Spalte enthält die Namenserweiterungen für die jeweiligen Filenamen. Die Farben werden benutzt, um Files entsprechender Typen hervorzuheben und leichter erkennbar zu machen.

Kontrollfragen zum Abschnitt 2.3 Top Line

  1. Erläutern Sie den Zusammenhang von Animationszeit, Simulationszeit und Realzeit!
  2. Mit welchen ATF-Kommandos kann man den Zeitfortschritt steuern?
  3. Erklären Sie die Wirkungsweise der ATF-Kommandos Time und DT!
  4. Erklären Sie die Wirkung des Time-Kommandos und seine Stellung im Animationstracefile!
  5. Nennen Sie einige Funktionen des Hauptmenüs im Run-Modus!
  6. Mit welchen ATF-Kommandos kann man ein Objekt erzeugen, platzieren und vernichten?
  7. Welche Hilfsmittel kann man benutzen, um Tracefiles zu schreiben?
  8. Mit welchen Kommandos kann man Objekte bewegen, färben und rotieren?
  9. Welche Modifikationen des Move-Kommandos gibt es?
  10. Wie veranlaßt man ein Objekt zu einer dauerhaften Rotation?
  11. Welche Eingabefiles kann Proof Animation™ verarbeiten?
  12. Welche Ausgabefiles erzeugt Proof Animation™?

SAHome previous next up Englishsmaller fonts Top Line
Last Modified Fri 05-27-11 06:54 GMT Valid CSS!

Comments please to:pelosim@yahoo.com