Seite 1 von 1

2D-Koordinaten Rotation/Translation

Verfasst: Dienstag 5. Januar 2021, 23:49
von jhonny98
Hallo!

Ich habe mich lange mit Rotationen und Translationen von Koordinatensystemen beschäftigt, jedoch
bin ich bis jetzt noch nicht auf einen grünen Zweig gekommen. Deshalb stelle ich meine Frage mal hier:

Das 2d-Koordinatensystem G beinhaltet das 2-d Koordinatensystem R, welches zu G sowohl verschoben, als auch
rotiert ist.

Nun möchte ich ausgehend von einem beliebigen Punkt im Koordinatensystem G, welcher den Ursprung des
Koordinatensystems R darstellt, einen Punkt, welcher im Koordinatensystem R liegt auf das Koordinatensystem G
abbilden (ich möchte am Schluss wissen, welche Koordinate dieser Punkt im Koordinatensystem G hat).

Um die Fragestellung anhand eines Beispiels zu Formulieren Folgendes:
Das Koord. System R ist zu G um 20° (im Uhrzeigersinn) verdreht und hat den Ursprung bei Punkt (2|1).
Nun hat R einen Punkt bei z.B. (5|2).

Wo ist nun die Koordinate (5|2) des Koordinatensystems R im Koordinatensystem G positioniert?

Wie gehe ich vor?
Kann die Verschiebung und die Rotation in einem Schritt erledigt werden?


Wie ein Punkt rotiert wird, ist unter folgendem Link mit code beispiel beschrieben.
https://stackoverflow.com/questions/225 ... r-point-2d
Jedoch weiß ich leider nicht, wie bzw. an welcher Stelle ich die Translation machen soll und wie ich den Weg retour wieder gehen soll.

Anbei ein Beispiel aus dem Link auf Python umgeschrieben:

Code: Alles auswählen

def rotate_point(cx,cy,angle, px, py):

    s = math.sin(angle);
    c = math.cos(angle);

    # translate point back to origin:
    px -= cx
    py -= cy

    # rotate point
    xnew = px * c - py * s
    ynew = px * s + py * c


    # kann ich an dieser Stelle einfach zB sagen, ich möchte den oben genannten Punkt (5|2) addieren?
    # also etwa so: xnew += 5
    # und ynew += 2
    # ??

    # translate point back:
    px = xnew + cx
    py = ynew + cy
    return px, py
Ich bedanke mich schon jetzt für eure Antworten und entschuldige mich für die dumme Frage :)
Lg

Re: 2D-Koordinaten Rotation/Translation

Verfasst: Mittwoch 6. Januar 2021, 00:07
von __deets__
Dazu benutzt man homogene Koordinaten, mir 3x3 Matrizen. Damit lassen sich beliebige affine Transformationen hintereinander ausführen. Siehe https://de.wikipedia.org/wiki/Affine_Abbildung

Da sind ein paar Beispiele bei, wie man versus Übung und Rotation darstellt. Und die kannst du einfach aneinander multiplizieren, um das gewünschte Ergebnis zu erzielen.

Re: 2D-Koordinaten Rotation/Translation

Verfasst: Mittwoch 6. Januar 2021, 00:15
von jhonny98
Vielen Dank für deine rasche Antwort.

Auf diesen Artikel bin ich auch schon gestoßen, jedoch ist dieser mir etwas zu mathematisch.
Eine Matrix zu rotieren alleine soll nicht das Problem sein, ich weiß nur nicht, wie ich danach weiter machen soll.
Lg

Re: 2D-Koordinaten Rotation/Translation

Verfasst: Mittwoch 6. Januar 2021, 09:58
von __deets__
Was heißt “eine Matrix zu rotieren”? Das gibt es nicht. Jedenfalls nicht in diesem Kontext.

Wenn du eine affine Transformationsmatrix A hast, dann kannst du einen Punkt p der Form (x, y, 1) damit multiplizieren, und bekommst die verschobene Form.

Bau das erstmal, und überzeugt dich, dass die Beispiele im Artikel für Verschiebung und Rotation dann so funktionieren.