Figur verschieben und drehen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
hubertgrassmann
User
Beiträge: 61
Registriert: Montag 26. Dezember 2022, 14:53

Ich habe hier die Eckpunkte eines Trapezes:
def tr():
return [[0.23,1],[0.75,1],[0.925,0.8],[0.6,0.55]]
Mit
a = tr()
plt.fill(xwerte(a),ywerte(a),color = 'r')
habe ich eine Figur. Wie kann ich die verschieben/drehen?
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Der Klassiker waeren homogene Koordinaten und die dazugehoerigen Matrizen. In deinem Fall 3x3. Siehe zB https://alexsm.com/homogeneous-transforms/
hubertgrassmann
User
Beiträge: 61
Registriert: Montag 26. Dezember 2022, 14:53

"homogene Koordinaten" kommen in der projektiven Geometrie vor, wir betreiben aber Euklidische Geometrie.
Das zitierte Verfahren ist doch ziemlich aufwendig, da stelle ich mir die entsprechenden Transformationen
(bei einer 90°-Drehung wäre das einfach (x,y) \mapsto (-y,x)) selbst her und wende die auf die Punkte in der Liste an. Ich glaubte, man könnte Figuren transformieren.
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn du allgemein nach Transformationen fragst, bekommst du auch eine allgemein gueltige Antwort. Wenn dir der Spezialfall orthogonaler Drehungen reicht, ist das natuerlich auch anders darstellbar.

Ob die Unteschreidung die du hier taetigst sinnvoll ist, wage ich zu bezweifeln. Man *kann* mit homogenen Koordinaten projezieren, was sehr nuetzlich ist, weil es die gesamte Kette von Transformationen (lokale, globale, perpektivische) zu einer sehr einfachen (eben genau nicht aufwendigen) Transformation zusammenfasst. Und einen Normalisierungsschritt.

Aber man muss die Perspektive ja nicht nutzen. Eine allgemeine Rotation in der euklidischen Geometrie kann ich auch nicht finden.
hubertgrassmann
User
Beiträge: 61
Registriert: Montag 26. Dezember 2022, 14:53

{\displaystyle R_{\alpha }={\begin{pmatrix}\cos \alpha &-\sin \alpha \\\sin \alpha &\cos \alpha \end{pmatrix}}.}
Das sagt wikipedia zum Thema Drehmatrix, auf deutsch:
R_a = [[cos(a), -sin(a)], [sin(a), cos(a)]]
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Und das unterscheidet sich wie substantiell von der Drehmatrix in der homogenen Transformation? Das ist doch exakt das gleiche, lediglich die Moeglichkeit, gleichzeitig auch noch durch eine Matrixmultiplikation die Verschiebung durchzufuehren, ist floeten gegangen.
hubertgrassmann
User
Beiträge: 61
Registriert: Montag 26. Dezember 2022, 14:53

Man kann ja auch zuerst die Translation und dann die Drehung ausführen und braucht keine Matrizen. Man muß sich nur überlegen, wohin man schiebt, denn die Drehung geschieht ja um (0,0).
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn man gegen Matrizen was hat, dann muss man sie natuerlich auch nicht benutzen. Aber sie stellen das uebliche Verfahren dar, weil sie alle Faelle abdecken. Darfst du natuerlich auch anders machen. Wenn du es aber besser weisst, warum dann ueberhaupt die Frage?
Antworten