Peter Lorenz | Simulation und Animation |
---|
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.
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.
Menü- und Werkzeugleiste im Run-Modus
ge("Im Run-Mode bietet die Werkzeugleiste folgende Funktionen an", "The tool bar of the run mode offers the following functions") ?>:
ge("Für die Realitätstreue von Modellen spielt die Genauigkeit der Nachbildung der Zeit eine wichtige Rolle", "For the realism of models the exactness of the imitation of time is very important") ?>.
ge("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.", "The animation time in Proof Animation starts at zero. Other than the simulated time, the animation time changes during the animation runtime, that is in the run mode, in small steps. For each step a new picture is calculated and displayed. The animation system tries to keep a realistic proportion between realtime and animation time. In the case of very many moving objects the refresh rate has to be adapted to the computing performance.") ?>
ge("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.", "The unit of the animation time is left to individual interpretation. It is for the user to decide whether to interpret a unit of the animation time as a second, a minute, an hour or a whole month. Generally it is to be avoided to use different interpretations for simulation and animation. If one step of time in the simulation model is interpreted as a minute, the same interpretation should be used for the animation.") ?>
ge("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.", "After the decision about the animation time unit the format of the display of thisw time can be specified. The current animation time is displayed on the right of the toolbar. The display format can be specified in the Draw mode. After selecting View and Date/Time Format the window shown on the left hand appears. Here the animation time unit and a starting time can be selected.") ?>
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.
value | Animationszeitpunkt, der abzuwarten ist, um die folgenden Kommandos auszuführen |
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:
ge("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.", "Time 20 Nothing happens till time 20. Create Circle C An Object of the class Circle and the name C is being created. Place C at 10 20 C appears on the screen at the position x=10, y=20. DT 30 Nothing happens till time 50. Destroy C C is being destroyed and disappears from the screen. End End of the sequence of commands of the ATF."); ?>
Die hier benutzten ATF-Kommandos werden in den folgenden Abschnitten erklärt.
Im folgenden werden die weiter oben schon benutzten ATF-Kommandos zur Erzeugung, Positionierung und Vernichtung von Objekten beschrieben.
classID | Name der Klasse, von der ein Objekt erzeugt werden soll. |
objectID | Name oder Zahl als Identifikator des zu erzeugenden Objekts |
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. |
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
ge("Objekte auf Pfaden werden im nächsten Abschnitt behandelt. Im folgenden geht es um die Bewegung zwischen zwei Punkten", "Objects on paths will be explained in the next chapter. The following explains the motion from one point to another") ?>.
Operand | ge("Erklärung","Explanation") ?> |
---|---|
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 |
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
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.
ge("Proof-Animationen kann man auch als Video speichern und vorführen. Wenn man hier klickt, sieht man die Animation aus dem aktuellen Beispiel.", "Proof animations can also be saved and presented as videos. Click here to view the animation of the current example.") ?>
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.
Operand | ge("Erklärung","Explanation") ?> |
---|---|
objectID | ge("spezifiziert das zu färbende Objekt.","specifies the object to be colored.") ?> |
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.
ge("Innerhalb jeder Schicht überdeckt eine Farbe mit höherer Nummer alle Farben mit niedrigerer Nummer.", "Within one layer a color covers all colors with lower number.") ?>
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.
Operand | ge("Erklärung","Explanation") ?> |
---|---|
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. |
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.
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
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-File | LAY | 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-File | LOG | Fehlernachrichten aus dem Ablauf der Animation |
LinkageFile | LKG | 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.