polarPath
polarPath
- Allgemeine Anmerkungen
Das Element polarPath
entspricht dem Element path
mit denselben Attributen und demselben Verhalten, nur die Kommandoglyphen und ihre
Bedeutung werden verändert, um Polarkoordinaten verwenden zu können. Andere Glyphen
als für das Attribut d
von path
werden nur verwendet, um in einem zweiten Vorschlag die Kommandos zusammenfügen
zu können.
Kommandos sind verfügbar in kleinen Buchstaben für relative Koordinaten und in großen
für absolute Koordinaten, wie für das Element path
.
Polarkoordinaten werden mit der radialen Komponente zuerst angegeben, dann folgt die
Winkelkomponente in Grad.
Im folgenden wird die radiale Komponente r genannt und die Winkelkomponente φ.
Der Laufparameter u eines einzelnen Fragmentes geht von 0 bis 1. Mit kartesischen
Koordinatenpaaren, gegeben mit dem H/h Kommando (hx,hy),
erfolgt die Transformation zu Koordinaten im Nutzerkoordinatensystem wie folgt:
x = r cos(φ) + hx
y = r sin(φ)+ hy
d
des Elementes polarPath
Mit dem Kommando H/h 'hub' wird das Zentrum oder der Ursprung für die Polarkoordinaten
angegeben, welches dahinter folgt. Dies Zentrum wird in kartesischen Koordinaten angegeben,
zum Beispiel H 100 200 bedeutet ein Zentrum bei (100,200) im Nutzerkoordinatensystem.
H/h kennzeichnet den Beginn eines neuen Unterpfades. Falls polarPath
ohne vorheriges H/h angegeben wird, wird das Zentrum angenommen als (0,0).
N/n 'nächster' Kommando entspricht exakt dem M/m des Elementes path
und
bedeutet eine Bewegung zur angegebenen Position und den Beginn eines neuen Unterpfades.
Falls mehrere Koordinatenpaare nach dem Kommando N/n folgen, werden die anschließenden
Paare behandelt als implizite Kommandos I/i (siehe unten).
Falls das Kommando N/n vor anderen Polarkoordinaten fehlt, wird das Anfangskoordinatenpaar
als '0 0' angenommen, aber Autoren sollten immer ein Anfangskoordinatenpaar angeben.
Kommando I/i ermöglicht es, einfache affine Spiralfragmente anzugeben.
Falls (ra, φa) der aktuelle Punkt ist und
(re, φe) das Koordinatenpaar nach dem
Kommando I, beschreibt das eine Kurve mit folgender Parametrisierung
mit dem Laufparameter u von 0 bis 1:
(r,φ)(u) = (1 - u) (ra, φa) + u (re, φe).
Beim Kommando i wird der aktuelle Punkt ra, φa zu
den relativen Koordinaten addiert, wie üblich vor dieser Parametrisierung.
Falls mehr als ein Koordinatenpaar angegeben ist, wird eine Polyspirale gezeichnet.
Am Ende des Kommandos wird der neue aktuelle Punkt auf die letzten Koordinaten gesetzt.
Kommando J/j ermöglicht es, ein quadratisches Bézier-Fragment anzugeben.
Es werden zwei Koordinatenpaare erwartet, die dem Kommando folgen, ober aber
ein multipler Satz von zwei Koordinatenpaaren.
Falls (ra, φa) der aktuelle Punkt ist und
(rc, φc) der Kontrollpunkt direkt nach dem
Kommando J/j und
(re, φe) das zweite Koordinatenpaar nach dem
Kommando J, beziehungsweise das erste Paar eines solchen Doubletts, beschreibt das eine Kurve
mit folgender Parametrisierung mit dem Laufparameter u von 0 bis 1:
(r,φ)(u) = (1 - u)2 (ra, φa)
+ 2u(1 - u) (rc, φc) +
u2 (re, φe).
Beim Kommando j wird der aktuelle Punkt ra, φa zu
den relativen Koordinaten addiert, wie üblich vor dieser Parametrisierung.
Falls mehr als ein Koordinatenpaar angegeben ist, wird eine Polykurve gezeichnet.
Am Ende des Kommandos wird der neue aktuelle Punkt auf die letzten Koordinaten gesetzt.
Kommando K/k ermöglicht es, ein kubisches Bézier-Fragment anzugeben.
Es werden drei Koordinatenpaare erwartet, die dem Kommando folgen, ober aber
ein multipler Satz von drei Koordinatenpaaren.
Falls (ra, φa) der aktuelle Punkt ist und
(rc, φc) der erste Kontrollpunkt direkt nach dem
Kommando K/k, beziehungsweise das erste Paar eines Tripletts,
(rd, φd) der zweite Kontrollpunkt und
(re, φe) das dritte Koordinatenpaar,
beschreibt das eine Kurve mit folgender Parametrisierung
mit dem Laufparameter u von 0 bis 1:
(r,φ)(u) = (1 - u)3 (ra, φa)
+ 3u(1 - u)2 (rc, φc) +
+ 3u2(1 - u) (rd, φd) +
u3 (re, φe).
Beim Kommando k wird der aktuelle Punkt ra, φa zu
den relativen Koordinaten addiert, wie üblich vor dieser Parametrisierung.
Falls mehr als ein Koordinatenpaar angegeben ist, wird eine Polykurve gezeichnet.
Am Ende des Kommandos wird der neue aktuelle Punkt auf die letzten Koordinaten gesetzt.
Das Kommando F/f ist die Kurzform des quadratischen Bézier-Fragmentes entsprechend dem Kommando T/t in kartesischen Koordinaten.
Das Kommando G/g ist die Kurzform des kubischen Bézier-Fragmentes entsprechend dem Kommando S/s in kartesischen Koordinaten.
R/r entspricht dem Kommando Z/z, allerdings wird mit diesem Kommando der polare Pfad
mit einer affinen Spirale geschlossen, wobei das erste Koordinatenpaar des aktuellen
Unterpfades als Endpunkt der Spirale genommen wird, zu der sie gemalt wird.
Bedingt durch die Mehrdeutigkeit der Konversion von Polarkoordinaten nach kartesischen
Koordinaten, gibt es mehrere Wege, um eine Spirale zum ersten Koordinatenpaar des
aktuellen Unterpfades zu malen, daher haben R/r bis zu vier zusätzliche Parameter, hier
p0,
p1, p2, p3
genannt.
Nicht angegebene Parameter werden als 0 angenommen. Autoren wird empfohlen, nur ganze
Zahlen für die ersten zwei Parameter zu verwenden und 0 oder 1 für die anderen beiden, siehe
Formeln unten, falls etwas anderes angegeben ist, wird das zu einer ganzen Zahl konvertiert
(floor ist die nächste ganze Zahl gleich oder kleiner als die gegebene Zahl).
Das Kommando hat die Aufgabe, eine Spirale vom aktuellen Punkt zum Anfangspunkt zum Unterpfad
zu malen.
Der aktuelle Winkel ψ zum Malen wird vom aktuellen Winkel φc
auf folgende Weise bestimmt: ψ = φc + floor(p0)*360 Grad.
Der Anfangswinkel ι zum Malen wird vom Anfangswinkel φi
auf folgende Weise bestimmt: ι = φi + floor(p1)*360 Grad.
Der dritte und vierte Parameter sind dazu gedacht, das Vorzeichen von r zu ändern, bevor die Spirale
gemalt wird.
Das aktuelle r wird bestimmt vom aktuellen rc in folgender Weise:
r = - rc und φ = ψ -180 Grad, falls der dritte Parameter nicht 0
ist, entsprechend das anfängliche rin = - ri und
φin = ι -180 Grad, falls der vierte Parameter nicht 0 ist.
Falls der dritte beziehungsweise vierte Parameter 0 ist, bleibt das entsprechende Koordinatenpaar unverändert.