Peter Lorenz English smaller fonts Simulation und Animation

2.1.4. Bewegung auf Pfaden

Objekte können sich frei oder auf Pfaden bewegen. Pfade werden im Path-Modus definiert und im Layoutfile gespeichert. Pfade besitzen verschiedene Attribute. Die Bewegung von Objekten auf Pfaden wird durch Animationstracekommandos gesteuert.

Konstruktion und Definition von PfadenTop Line

Pfade müssen aus Linien und Kreisbögen im Draw-Modus konstruiert werden. Man muß also immer im Draw-Modus das Zeichnen der graphischen Primitive ausführen, auf denen später Pfade definiert werden sollen. Die Pfade dürfen mit beliebig gewählter Farbe gezeichnet werden. Wenn man Backdrop als Farbe wählt, ist die Pfadlinie im Run-Mode unsichtbar.

Die Definition von Pfaden auf diesen vorbereiteten Primitiven geschieht im Path-Modus. Wenn man diesen Modus auswählt, wird im Menü zunächst nurAdd a New PathAdd a new path angeboten:

Path Mode

Wenn man es wählt, erscheint die Eingabeaufforderung Please enter a name for the new path.

Path Menu

Nach Eingabe eines Wegnamens werden die obengezeigten Funktionen der Werkzeugleiste aktiviert. Um einen Pfad zu spezifizieren, klickt man zunächst auf einen Punkt im vorderen Teil des ersten Wegsegmentes. Dieses Wegsegement erscheint nun in roter Farbe und man kann die Wegbestimmung fortsetzen, indem man auf einen dahinter liegenden Teil des geplanten Weges klickt. Pfade, deren Definition abgschlossen ist, erscheinen in blauer Farbe.

Path Menu

Bild: Path-Spezifikation

Wenn man nacheinander alle Pfadabschnitte bestimmt hat, sollte man die Korrektheit des konstruierten Pfades mit Check out (traverse) the active path überprüfen. Hier ist vor Doppelbelegungen von Segmenten zu warnen. Im Path-Modus kann man sie erkennen. Dazu eignen sich auch Select_the_first_path_segment Select the first path segment und Select the next path segment Select the next path segment , mit denen man sich davon überzeugen kann, dass man die benötigten Pfadsegmente in der richtigen Reihenfolge ausgewählt hat. Später bemerkt man Fehler nur durch merkwürdiges Verhalten von Objekten auf dem Pfad. Nach Abschluß der geometrischen Wegdefinition kann man Wegattribute wählen. Darauf wird in einem folgenden Abschnitt eingegangen.

Nach Definition aller benötigten Wege wird das Layout mit File>Save Layout gespeichert. Wenn man das Layoutfile in Textform betrachtet, erkennt man, wie Proof Animation™ die Wege aus vordefinierten Linien und Kreisbögen aufbaut.

Color F2
Line #1 -4 60 10 60
Line #2 10 60 17 50
Line #3 17 50 30 58
Line #4 30 58 43 58
Color Backdrop
Line #5 -3 47 10 47
Line #6 26 46 40 46
Arc  #7 3 13 37 180 270 4.7124
Line #8 13 34 23 34
Arc  #9 3 23 37 -90 0.00000006 4.7124
Line #10 26 37 26 46
Line #11 10 47 10 37
Define Path PLines Label -5.8984 59.8438 Speed 0
Segment #1 -4 60 10 60 14
Segment #2 10 60 17 50 12.2066
Segment #3 17 50 30 58 15.2643
Segment #4 30 58 43 58 13
End
Define Path PComb Label -4.5703 46.875 Speed 0
Segment #5 -3 47 10 47 13
Segment #11 10 47 10 37 10
Segment #7 10 37 13 34 4.7124 CCW
Segment #8 13 34 23 34 10
Segment #9 23 34 26 37 4.7124 CCW
Segment #10 26 37 26 46 9
Segment #6 26 46 40 46 14
End
Download Path2.lay

Man erkennt, dass Pfaddefinitionen im Layoutfile mit Define Path beginnen und mit End enden. Dazwischen liegen Segmentdefinitionen. Wie diese zu interpretieren sind, findet man im Help-Text von Proof Animation™ unter Layout File Command Summary:

  1. # ID-Nummer eines vorher definiertes Graphikprimitiv (Linie oder Bogen),
  2. x-Koordinate des Anfangspunktes,
  3. y-Koordinate des Anfangspunktes,
  4. x-Koordinate des Endpunktes,
  5. y-Koordinate des Endpunktes des Segmentes und
  6. Länge des Segmentes.
  7. [CW|CCW]: Für Kreisbögen ist anzugeben, ob der Weg im Uhrzeigersinn (clockwise) oder entgegen dem Uhrzeigersinn (counter-clockwise) verläuft.

Ein Segment umfasst eine definierte Linie vollständig oder nur teilweise. Der Anfänger braucht sich nicht für die Syntax von Pfaddefinitionen zu interessieren. Dem fortgeschrittenen Modellentwickler helfen diese Kenntnisse bei der computergestützten Auswahl von Layoutinformationen und ihrer Bearbeitung im Simulationmodell, wo Weglängen und -topologien von großem Interesse sein können.

Objektbewegung auf PfadenTop Line

Zur Beschreibung von Objektbewegungen auf Pfaden gibt es das ATF-Kommando Place on. Geschwindigkeit und Zeitdauer dieser Bewegungen kann man mit Set Speed und Set Travel festlegen.

Place on
setzt ein Objekt auf einen Pfade. Die Syntaxdarstellung lautet

place ObjectID1 on pathname[squeeze] [at offset ][at end] [before ObjectID2] [after ObjectID2] .
Wenn at nicht spezifiziert ist, wird das Objekt an den Beginn des ersten Segments im Pfad gesetzt.
place 13 on PLines
setzt Objekt 13 auf den Pfad PLines an den Beginn des ersten Segmentes.
Wenn at angegeben ist, wird das Objekt offset Längeneinheiten nach dem Startpunkt des Pfades auf diesen gesetzt.
place 13 on PLines at 10
setzt Objekt 13 auf den Pfad PLines 10 Längeneinheiten nach dem Startpunkt des Pfades.
place 13 on PLines squeeze at end
setzt Objekt 13 mit seinem Koordinatenursprungsort and das Ende des Pfades.
Für einen akkumulierernden Pfad werden Objekte, die sich schon am Ende des Pfades befinden, zurückgeschoben, um Platz zu machen, falls squeeze angegeben ist.
Wenn squeeze nicht angegeben ist und das Ende des Pfades schon besetzt ist, erfolgt eine encroachment-Warnung.
Wenn der Pfad akkumulierend ist, kann die Benutzung von before und after ohne squeeze ebenfalls zu encroachment-Warnungen führen
Eine optionale RGP-Klausel kann angefügt werden, wenn die Objektklasse einen RGP (Rear Guidance Point) besitzt. Folgende drei Formen sind verfügbar:
RGP on pathname2 | RGP pulled | RGP follows
Zum aktuellen Zeitpunkt der Animationszeit beginnt das Objekt seine Bewegung auf dem Pfad. Die Bewegung dauert solange, bis das Ende des Pfades erreicht ist oder ein neues ATF-Kommando die Bewegung unterbricht. Die Bewegungsgeschwindigkeit ist bestimmt durch
  • die definierte Pfadgeschwindigkeit. Sie wird ignoriert, falls
  • eine Klassengeschwindigkeit für die Objektklasse festliegt. Diese ist überschreibbar durch
  • eine Objektgeschwindigkeit, welche dem Objekt direkt zugeordnet ist.
Set Object ... Speed
ist ein ATF-Kommando, mit welchem man einem Objekt eine individuelle Geschwindigkeit zuweisen kann, die sowohl von seiner Klassengeschwindigkeit als auch der Pfadgeschwindigkeit abweicht. Die Syntaxdarstellung lautet:
set [Object] ObjectID speed [speed|path|class]
OperandInhalt
ObjectIDIdentifikator des Objektes
speedObjektgeschwindigkeit in Wegeinheit pro Einheit der Animationszeit
pathÜbernahme der Path-Geschwindigkeit als Objektgeschwindigkeit
classÜbernahme der class-Geschwindigkeit als Objektgeschwindigkeit
Set Object Travel
ist ein ATF-Kommando, mit welchem man einem Objekt eine individuelle Bewegungsdauer auf einem Pfad zuweisen kann. Die Syntaxdarstellung lautet:
Set [Object] ObjectID Travel traveltime
OperandInhalt
ObjectIDIdentifikator des Objektes
traveltimeZeit an, die das Objekt verbrauchen soll, um den Pfad oder den verbleibenden Rest des Pfades zurückzulegen
Das folgende ATF demonstriert die Benutzung der eben eingeführten Kommandos.
Time 10              Warten bis zum Zeitpunkt 10
Create Circle C1
Set C1 Speed 2
Place C1 on PComb    Bewegung auf Pfad PComb starten
DT 10                10 Zeiteinheiten weiter 
Create Square Q1
Place Q1 on PLines   Bewegung auf Pfad PLines starten
Set Q1 Travel 30     Bewegungsdauer festlegen
Time 100             Warten, bis alle Bewegungen abgeschlossen sind
End
Download Path2.atf
Die folgenden Bilder sind Schnappschüsse zu zwei verschiedenen Werten der Animationszeit. After 15 Time Units

Bild: Schnappschuß nach 15 Zeiteinheiten

Der Weg PComb verläuft von rechts nach links. Entsprechend bewegt sich auch die Kreisscheibe. Das Bild wurde im Debug-Modus aufgezeichnet. In diesem Modus werden alle Pfade mit blauer Farbe angezeigt. After 40 time units

Bild: Schnappschuß nach 40 Zeiteinheiten

Nun sind beide Objekte auf dem Pfad und haben schon große Teile ihrer Wege zurückgelegt. Das Quadrat auf dem Weg PLines bewegt sich von links nach rechts. Man erkennt, dass es seine Orientierung, den Winkel seiner lokalen x-Achse mit der globalen x-Achse, während der Bewegung beibehält. Das Bild ist im Run-Modus aufgezeichnet. Hier ist der untere Pfad PComb unsichtbar, weil er mit der Farbe Backdrop gezeichnet wurde.Einen Eindruck vom gesamten Ablauf dieser Animation vermittelt das AVI File

Attribute von Pfaden

Path Attributes

Bisher ist nur die Definition der Geometrie von Pfaden behandelt worden. Im Path-Modus hat man während der Definition oder der Änderung eines Pfades auch die Möglichkeit, Attribute für diesen Pfad festzulegen. Im links stehenden Bild erkennt man die verfügbaren Attribute. Attribute sind Pfadeigenschaften, die den Pfad selbst betreffen oder das Verhalten der auf ihm bewegten Objekte beeinflussen. Sie sollen im folgenden erläutert werden.

Die ersten drei Attribute sind voneinander abhängig.

Length
ist die nicht direkt, sondern nur durch Änderung der Geometrie des Pfades beeinflußbare Länge.
Speed
kann direkt eingegeben werden. Mit der Eingabe von Speed wird automatisch das Attribut Time berechnet und erscheint auf dem Bildschirm.
Time
kann ebenfalls direkt eingetragen werden. Damit ändert sich automatisch Speed, denn die Länge des Pfades bleibt konstant.
Lag Time
ist eine Attribut, das nur für akkumulierende Pfade sinnvoll ist. Es definiert eine Verzögerungszeit für Objekte auf einem akkumulierenden Pfad. Wenn z.B. Autos am Ende eines Pfades stehen und darauf warten, dass eine Ampel grün wird, fahren sie bei positiver Lag-Time nicht gleichzeitig an. Die Lag-Time bestimmt die Zeitlücke zwischen dem Anfahren.
Circular/Non-Circular
ist ein Pfadattribut, das als Zirkularität oder Geschlossenheit bezeichnet werden kann und folgende Bedeutung hat: Objekte auf einem zirkularen Pfad setzen nach Erreichen des Pfadendes ihre Bewegung am Pfadanfang fort. Man kann sie so beliebig lange auf einer geschlossenen Bahn bewegen.
Accumulating/Non-Accumulating
bezieht sich auf das Attribut akkumulierend (accumulating). Diese Eigenschaft betrifft das Verhalten von Objekten beim Aufeinandertreffen auf einem Pfad. Wenn sich Objekte mit unterschiedlicher Geschwindigkeit auf einem akkumulierenden Pfad bewegen, können sie einander nicht überholen. Sie müssen voneinander einen Abstand einhalten, der durch die Clearance-Parameter der Objekte bzw. der entsprechenden Klassen bestimmt ist. Das gilt auch für das Erreichen des Pfadendes.
Auf einem nicht akkumulierenden Pfad überholen Objekte einander, indem sie sich bildlich durchdringen.
Validation ON/OFF
entscheidet über die Kontrolle von Objektbewegungen auf akkumulierenden Pfaden. Die Ausgabe einer Warnung erfolgt nur, wenn Validation ON gesetzt ist. Dabei unterscheidet man folgende Konfliktsituationen:
NameInhalt
Leapfrog Von einem akkumulierenden Pfad wird nicht das führende, sondern ein späteres Objekt entfernt
Encroachment Zwei Objekte auf einem akkumulierenden Pfad laufen ineinander. Das geschieht insbesondere dann, wenn am Anfangspunkt Objekte in zu schneller Folge eintreffen

Das Layoutfile des obigen Beispiels (Path2.lay) soll nun ein wenig verändert werden:

PLines Attributes
  1. Der Pfad PLines erhält das Attribut Circular.
  2. Der Pfad PLines erhält den Speed-Parameter 2.
  3. Der Pfad PComb erhält das Attribut Accum.
  4. Die Klasse Circle erhält den For-Clearence-Parameter 10.
  5. Die Klasse Square erhält den Speed-Parameter 1.
Download Path3.lay

Nun werden folgende Experimente veranstaltet:

Experiment 1: Bewegung auf geschlossenem, nicht akkumulierenden Pfad
Time 10
Create Square Q1     
Place Q1 on PLines  Q1 beginnt Bewegung auf PLines mit Speed 1
Time 30
Create Circle C1
Place C1 on PLines  C1 beginnt Bewegung auf PLines mit Pfad-Speed 2
Set C1 Speed 2      C1 erhält eine Geschwindigkeit
Time 100
End
After 45 units of time

Die nebenstehenden Schnappschüsse sollen einen Eindruck vom Geschehen auf dem Bildschirm vermitteln.

Zuerst setzt sich das Objekt Q1, ein Quadrat, mit seiner Class-Speed 1 auf dem Pfad PLines in Bewegung. Zwanzig Zeiteinheiten später taucht die schnellere Kreisscheibe C1 am Anfangspunkt des Pfades auf. Sie braucht nicht lange, um Q1 einzuholen. Im ersten Bild, zum Zeitpunkt 45, hat sie das Quadrat bereits teilweise erreicht. Wegen ihres niedrigeren Farbcode-Wertes wird sie vom Quadrat überdeckt. Das Überholen erfolgt, weil der Pfad nicht akkumulierend ist.

After 55 units of time

Im zweiten Bild, zum Zeitpunkt 55, sind die Zeit und die Bewegung weiter fortgeschritten. Nun hat die Kreisscheibe das Quadrat überholt. Sie nähert sich bereits dem Ende des Pfades. Sobald sie dieses Pfadende erreicht haben wird, springt sie zurück zum Anfangspunkt dieses durch das Attribut circular logisch geschlossenen Pfades. Das Quadrat Q1 folgt mit halber Geschwindigkeit, ohne seine Orientierung zu verändern.

After 60 units of time

Im letzten Bild, zum Zeitpunkt 60, hat die Kreisscheibe den ersten Durchlauf des Pfades beendet und die Bewegung an seinem Anfangspunkt fortgesetzt. Das Quadrat befindet sich noch immer auf der ersten Runde.


Layoutfile und ATF stehen bereit und man kann den vollständigen Ablauf der Bewegung damit betrachten. Alternativ steht das Beispiel als avi zur Verfügung.

Experiment 2: Bewegung auf akkumulierendem Pfad
Time 10
Create Square Q1
Place Q1 on PComb  Q1 beginnt Bewegung auf PComb mit Speed 1
Time 30
Create Circle C1
Place C1 on PComb  C1 beginnt Bewegung auf PComb mit Pfad-Speed 2
Set C1 Speed 2
Time 100
End
After 31 units of time

Der Pfad PComb hat nun das Attribut Accumulating. Objekte mit unterschiedlicher Geschwindigkeit können sich auf ihm nicht überholen. Zum Zeitpunkt 10 wird wieder das Quadrat mit der Geschwindigkeit 1 auf den Pfad gesetzt. Zum Zeitpunkt 30 kommt die Kreisscheibe hinzu. Der Anfangsabstand beträgt 20 und verringert sich laufend.

After 40 units of time

Zum Zeitpunkt 40 hat die Kreisscheibe das Quadrat erreicht. Der Abstand 10 bleibt erhalten: Er entspricht der For-Clearance der Klasse Circle. Die Kreisscheibe folgt nun dem Quadrat mit diesem konstanten Abstand.

After 80 units of time

Nun hat das Quadrat das Ende des Weges erreicht und bewegt sich nicht weiter. Denn der Weg ist nicht zirkulär. Die Kreisscheibe kann das Wegende nicht erreichen, solange es durch das Quadrat blockiert ist.

Layoutfile und ATF stehen bereit und man kann den vollständigen Ablauf der Bewegung damit betrachten. Alternativ steht das Beispiel in den Formaten avi, svg und Flash zur Verfügung.


Orientierte und nicht orientierte BewegungTop Line

An der Bewegung des Quadrates konnte man beobachten, dass das Quadrat seine Orientierung, den Winkel zwischen der x-Achse seines lokalen Koordinatensystems und der globalen x-Achse nie verändert. Das hängt mit einem Klassen- oder Objektattribut, der Orientiertheit oder Directionality zusammen. Sie kann die beiden Attributwerte Directional oder Non Directional annehmen. Ein Objekt mit dem Attributwert Directional paßt seine lokale x-Achse laufend der Tangente des Pfades an, auf dem es sich bewegt.

Specify the directionality in the Class Mode

Dieses Attribut kann man im Class-Modus spezifizieren werden. Das nebenstehende Bild zeigt, wie man einer Klasse den Attributwert Directional zuweist. Die zweite Möglichkeit zur Wertzuweisung an dieses Attribut hat man mit den folgenden ATF-Kommandos.


Set Object Directional/Nondirectional
ist ein ATF-Kommando, das die Orientiertheit eines Objektes festlegt. Die Syntaxdarstellung lautet:
Set Object ObjectID Directional/Nondirectional
Set Class Directional/Nondirectional
ist ein ATF-Kommando, das die Orientiertheit der neu zu generierenden Objekte einer Klasse festlegt. Die Syntaxdarstellung lautet:
Set Class classname Directional/Nondirectional
Experiment 3: Bewegung eines direktionalen Objektes auf einem Pfad

Das erste Beispiel soll nun so modifiziert werden, dass zuerst ein Quadrat mit Orientiertheitsattribut Directional auf den Pfad PComb gesetzt wird. Das nächste Objekt ist wieder ein Quadrat, diesmal Nondirectional.

Time 10
Create Square Q1
Set Object Q1 Directional
Place Q1 on PLines  Q1 beginnt Bewegung auf PLines mit Speed 1
Time 30
Create Square Q2
Place Q2 on PLines  Q2 beginnt Bewegung auf PLines mit Pfad-Speed 1
Set Q2 Speed 2      Q2 soll schneller sein als Q1.
Time 100
End

After 33 units of time Im nebenstehenden Bild befindet sich das erste Objekt auf dem schräg nach unten verlaufenden Teil des Pfades PLines. Man erkennt, wie es in seiner Orientierung dem Pfad folgt.

After 40 units of time Nun sind beide Objekte auf dem schrägen Teil des Pfades. Man erkennt, dass das zweite Objekt seine Orientierung konstant hält.

Kontrollfragen zum Abschnitt 2.4. Top Line

  1. Wie kann man Objektbewegungen im Proof klassifizieren?
  2. Wie geht man vor, um Pfade zu definieren?
  3. Welche Vorbereitungen sind nötig, um einen Pfad zu definieren?
  4. Welche Angaben über Pfade werden im Layoutfile gespeichert?
  5. Wie veranlaßt man ein Objekt, die Bewegung auf einem Pfad aufzunehmen?
  6. Wie kann man die Geschwindigkeit der Bewegung eines Objektes auf einem Pfad beeinflussen?
  7. In welcher Weise sind die Attribute Length, Speed und Time eines Pfades miteinander verbunden?
  8. Nennen Sie einige Pfadattribute!
  9. Wie unterscheiden sich Pfade mit den Attributwerten Circular und Non-Circular?
  10. Wie unterscheiden sich Objektbewegungen auf akkumulierenden und nicht akkumulierenden Pfaden?
  11. Welchen Einfluß hat der Attributwert Directional auf die Objektbewegung auf einem Pfad?

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