Holen Sie sich lokale Koordinaten von globalen Koordinaten

7

Ich muss lokale Koordinaten von globalen Koordinaten erhalten. Ich habe keine fertigen Beispiele gefunden.

Geben Sie hier die Bildbeschreibung ein

Bitte helfen Sie mir, wie es auf dem Beispielbild geht. Vielen Dank!

AKTUALISIERT:

Hier ist die Methode in Java, die dank Ihrer Hilfe erstellt wurde! Es funktioniert bei mir :) Danke!

public static double[] getLocalFromGlobal(int pointX, int pointY, int localX, int localY, float angle) {
    float px = pointX - localX;
    float py = pointY - localY;

    double cos = Math.cos((Math.PI / 180) * angle);
    double sin = Math.sin((Math.PI / 180) * angle);

    double finalX = (px * cos) + (py * sin);
    double finalY = -(px * sin) + (py * cos);
    return new double[]{finalX, finalY};
}
Qulery
quelle
1
Verwenden Sie eine homogene Transformationsmatrix mit R = einer CW-Drehung um 45 Grad und T = einer Translation um (40,20). Wenn Sie die Umkehrung benötigen, verwenden Sie die Umkehrung.
Pieter Geerkens

Antworten:

8

Der zu transformierende Punkt P ist in homogenen Koordinaten:

(50401)

Die homogene Transformationsmatrix M ist (unter Verwendung von ) = sin ( :cÖs(π4π4)=0,7071)

(0,70710,7071- -42.426- -0,70710,707114.142001)

unter Hinweis darauf, dass und und unter Verwendung der Identität in meiner Antwort hier bewiesen(40+20)0,7071=42.426(40- -20)0,7071=14.142

Anwenden von M auf P mit Matrixmultiplikationsausbeuten

(35,35+28.28- -42,42- -35,35+28.28+14.140+0+1)=(21.217.071)

Beachten Sie, dass normale Vektoren, z. B. für Position und Geschwindigkeit, kontravarianten . Dies bedeutet, dass für eine Transformation T der Basisvektoren die Komponenten durch die inverse Transformation T * transformiert werden. Nur Doppelvektoren wie der Gradient sind co-variantenförmig, wobei ihre Komponenten durch T transformiert werden.

Pieter Geerkens
quelle