[previous][map][next]

2.2 Transformation von Geometrie-Elementen

Geometrie-Elemente dienen zur Darstellung von Gleisen. Soll nun ein Gleis transformiert werden, so muss dazu die Transformation auf jedes Geometrie-Element angewandt werden. Es kommen nur zwei Arten von Transformationen in Frage: Die Translation und die Rotation. Andere Transformationen wie Skalierung oder Scherung sind irrelevant und müssen nicht betrachtet werden.

2.2.1 Translation

Unter der Translation versteht man eine Verschiebung des Elementes in x- und y-Richtung. Dazu müssen lediglich die Koordinaten des Startwertes neu berechnet werden.
Es ergibt sich folgende Matrixoperation:
oder aufgelöst:
x' = x + dx
y' = y + dy
Die homogene Komponente braucht nicht beachtet zu werden, da weder Translation noch Rotation sie beeinflussen. Sie wird hier nur der Vollständigkeit halber angegeben.

2.2.2 Rotation

Neben einer Translation müssen Geometrie-Elemente geeignet gedreht werden. Es treten zwei Arten von Rotationen auf.

2.2.2.1 Rotation um den Ursprung

Der einfache Fall ist die Rotation um den Ursprung.
Es ergibt sich folgende Drehmatrix.
oder aufgelöst:
x' = cosq * x - sinq * y
y' = sinq * x + cosq * y
Auch hier braucht die homogene Komponente nicht berücksichtigt zu werden. Für die Geometrie-Elemente müssen die Koordinaten der Startpunkte neu berechnet werden. Der neue Richtungswinkel a' ergibt sich aus der Summe von a und q. Die Längen und Radien der Geometrie-Elemente werden von der Rotation nicht beeinflußt.

2.2.2.2 Rotation um einen beliebigen Punkt

Um Geometrie-Elemente geeignet zu platzieren genügt es in den seltensten Fällen, diese um den Koordinatenursprung zu drehen. Oft müssen sie um einen beliebigen Punkt gedreht werden. Dazu ist folgende Vorgehensweise notwendig: Durch Multiplikation der drei Matrizen ergibt sich die Transformationsmatrix. Es ist auf die Reihenfolge bei der Matrizenmultiplikation zu achten. Sie ist nicht kommutativ und eine Vertauschung der Matrizen führt zu falschen Ergebnissen. Der Drehpunkt hat die Koordinaten (x1, y1)
M = M3 * M2 * M1 = **
oder aufgelöst:
x' = x1 + cosq * (x - x1) - sinq * (y - y1)
y' = y1 + sinq * (x - x1) + cosq * (y - y1)      Die Formel wurde nachträglich korrigiert!

[previous][map][next]