12.11.2013 Aufrufe

Phys. Dirk Burghardt

Phys. Dirk Burghardt

Phys. Dirk Burghardt

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

95<br />

Anhang D<br />

Vergrößerung und Verkleinerung von Flächen<br />

Die vorgestellte Routine berechnet für Flächenobjekte die Lagekoordinaten des Umrandungspolygons<br />

nach Dehnung oder Stauchung. Dazu werden jeweils drei aufeinanderfolgende Punkte<br />

(x 0 , y 0 ; x 1 , y 1 ; x 2 , y 2 ) der zu verändernden Fläche (in mathematischem Richtungssinn) und der<br />

Betrag v, um den verkleinert oder vergrößert werden soll, übergeben. Als Ergebnis erhält man<br />

die neuen Koordinaten des mittleren Punktes (x g , y g ).<br />

In der Routine wird ein kartesisches Koordinatensystem bestimmt, dessen Ursprung im übergebenen<br />

Punkt (x 1 , y 1 ) liegt und dessen x-Achse durch den gesuchten Punkt (x g , y g ) geht. Im<br />

Einzelnen werden folgende Berechnungen durchgeführt :<br />

• Der Koordinatenursprung wird in den Punkt (x 1 , y 1 ) verschoben (Index t : Translation) :<br />

(x 0 , y 0 ; x 1 , y 1 ; x 2 , y 2 ) −→ (x t 0 , yt 0 ; 0.0, 0.0; xt 2 , yt 2 ).<br />

• Anschließend wird die x-Achse so gedreht, daß sie durch den Punkt (x t 0 , yt 0 ) geht. Die<br />

Berechnung des Drehwinkels α zwischen dem Vektor (x t 0 , yt 0 ) und der x-Achse (1.0, 0.0)<br />

erfolgt mittels Skalarprodukt.<br />

• Zur Bestimmung des Drehsinns wird getestet, ob (x t 0 , yt 0 ) im 1. oder 2. Quadranten liegt<br />

(positiver Drehsinn). Ansonsten wird die Drehung um α in negativer Richtung ausgeführt<br />

(x t 0 , yt 0 ; 0.0, 0.0; xt 2 , yt 2 ) −→ (xtd 0 , ytd 0 ; 0.0, 0.0; xtd 2 , ytd 2 ).<br />

• Die folgende Rotation dreht die x td -Achse in den gesuchten Punkt (x g , y g ). Zunächst wird<br />

mittels Skalarprodukt der Winkel β ′ zwischen (x td<br />

0 , ytd 0 ) und (xtd 2 , ytd 2 ) berechnet. Liegt<br />

(x td<br />

2 , ytd 2 ) im 3. oder 4. Quadranten ergibt sich der Drehwinkel β nach β = (360◦ − β ′ )/2,<br />

ansonsten ist β = β ′ /2. Die Drehung erfolgt im mathematisch positiven Drehsinn.<br />

) hat im verschobenen, zweimal gedrehten Koordinaten-<br />

• Der gesuchte Punkte (x tdd<br />

g , yg<br />

tdd<br />

system die folgenden Koordinaten :<br />

x tdd<br />

g = v p ; y tdd<br />

g = 0.0 .<br />

• Die Größe von v p läßt sich am einfachsten im verschobenen, einmal gedrehten Koordinatensystem<br />

bestimmen. Hierzu wird der Vektor (0, v) auf die x td -Achse projiziert.<br />

• Die Rücktransformation von (x tdd<br />

g , yg<br />

tdd ) liefert (x g , y g ). Dafür wird zunächst das Koordinatensystem<br />

um β zurückgedreht : (x tdd<br />

g , yg<br />

tdd ) −→ (x td<br />

g , yg td ). Anschließend wird die Drehung<br />

um α rückgängig gemacht : (x td<br />

g , yg td ) −→ (x t g, yg). t Dabei ist der Drehsinn der Hintransformation<br />

zu beachten. Am Ende liefert die Translation von (x t g, yg) t −→ (x g , y g ) den<br />

gesuchten Punkt.<br />

Diese Routine ist auf alle Umrandungspunkte der zu vergrößernden oder zu verkleinernden<br />

Flächen anzuwenden. Dehnung und Stauchung unterscheiden sich dabei nur durch die Reihenfolge,<br />

in der Vorgänger und Nachfolger übergeben werden.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!