Punkt weiterrotieren - wie?
-
Hast du denn den richtigen Bezugspunkt verwendet? Wenn du mehrere Punkte gemeinsam rotierst, solltest du eigentlich irgendein Muster erkennen.
-
SeppJ schrieb:
Darf ich annehmen, dass du mitgedacht hast und Mups Schreibfehler nicht mit übernommen hast?
Nein, ich rechne nicht
y1+xc
sondern
y1+yc
das passt bei mir schon.
-
CStoll schrieb:
Hast du denn den richtigen Bezugspunkt verwendet? Wenn du mehrere Punkte gemeinsam rotierst, solltest du eigentlich irgendein Muster erkennen.
Ich habe einfach mal ein Bild fabriziert: http://img268.imageshack.us/img268/7641/clipboard01lw.png
Ganz oben sind meine Ausgangsdaten zu sehen, eine gerade Linie (z.B. die Oberseite vom "T") besteht dabei aus vielen kleinen Einzellinien.
Dann gibt es einen Rotationsmodus (der Text darunter), in dem jeder Koordinatenpunkt einzeln rotiert wird - um so weiter er sich vom Mittelpunkt des Textes weg befindet, um so weiter wird rotiert. Das funktioniert prima, verzerrt mir aber die Buchstaben.
Also habe ich diesen anderen Algorithmus eingesetzt: es wird der mittlere Abstand jedes Buchtaben vom Mittelpunkt des Textes ermittelt, daraus ergibt sich der Rotationswinkel. Dann wird jeder Buchtsabe einzeln in die Mitte verschoben und von dort aus jede seiner Koordinaten um den zuvor ermittelten Winkel weiterrotiert. Der Unterschied zum ersten Verfahren: alle Koordinatenpunkte eines Buchstaben werden um den gleichen Winkel weitergedreht, damit der Buchstabe nicht verzerrt wird.
Das mache ich mit dem Algorithmus von oben, das Ergebnis ist der lustig verzerrte Text ganz unten im Bild.
-
Panamakanal schrieb:
Mups schrieb:
x1 = (x0-xc) cos ω + (y0-yc) * sin ω
y1 = - (x0-xc) sin ω - (y0-yc) * cos ω(x1+xc, y1+xc) ist der neue Punkt
In dem hier zitierten Beitrag hat sich noch ein weiterer Fehler eingeschlichen (vergleich mal die Formeln mit der Matrix-Schreibweise, dann fällt der Vorzeichenfehler vielleicht auf).
-
Und wo sieht man in dem Bild dies:
Trotzdem dreht mir dieser Code die Punkte nach sonstwo hin, mit dem eigentlich gewünschten Winkel hat das nix zu tun.
?
-
SeppJ schrieb:
Und wo sieht man in dem Bild dies:
Trotzdem dreht mir dieser Code die Punkte nach sonstwo hin, mit dem eigentlich gewünschten Winkel hat das nix zu tun.
?
Ganz unten im Bild - das in der Mitte ist NICHT das Ergebnis der Formel von oben...
-
Ach, da war ich ja fleißig. Ich hab gleich zwei kleine Aufgaben zum Mitdenken in das Posting eingebaut
Die Matrix-Formel war richtig, alles andere ist zum denken. Wurde ja eigentlich auch schon geschrieben.
Für Leute, die nicht denken wollen:
x1 = (x0-xc) cos [e]omega[/e] + (y0-yc) * sin [e]omega[/e] y1 = - (x0-xc) sin [e]omega[/e] [b]+[/b] (y0-yc) * cos [e]omega[/e]
und
(x1+xc, y1+yc) ist der neue Punkt.
Dein Bild verstehe ich übrigens auch nicht.
-
Mups schrieb:
Dein Bild verstehe ich übrigens auch nicht.
Das entsteht tatsächlich so, wenn das Vorzeichen falsch ist - jetzt passt es
-
Panamakanal schrieb:
Gibt's auch einen Weg nur auf Basis von sin() und cos()? Mir wäre es recht, wenn es möglichst wenig Rechenzeitintensiv ist, was bei dem Umweg über eine Matrix ja leider der Fall ist...
wie kommst du auf den Müll?
-
otze schrieb:
Panamakanal schrieb:
Gibt's auch einen Weg nur auf Basis von sin() und cos()? Mir wäre es recht, wenn es möglichst wenig Rechenzeitintensiv ist, was bei dem Umweg über eine Matrix ja leider der Fall ist...
wie kommst du auf den Müll?
danke für diesen wichtigen Beitrag; SG1 hats vor 10 Tagen etwas freundlicher ausgedrückt...