Koordinatentrasnformation

Neue Frage »

Icebear Auf diesen Beitrag antworten »
Koordinatentrasnformation
Hallo,

ich habe hier ein Problem und komme absólut nicht auf die Lösung.
Und zwar arbeite ich unter Matlab und habe ein Array mit ner Menge XY-Koordinaten. Diese ergeben zusammen einen Streckenverlauf aus der Obenaufsicht (Erdfeste Koordinaten). Nun möchte ich diese Strecke praktisch abfahren, allerdings aus der Sicht des Fahrers.

Dazu habe ich überlegt, dass Array Punkt für Punkt zu durchlaufen und den aktuellen sowie die 10 nächsten Punkte anzuzeigen.

Also müsste der 1. (aktuelle Punkt) so umgerechnet werden, dass er auf den Koordinaten x/y unglücklich 10|0) liegt und die nächsten 10 müssten sich dann entsprechend der 1. Transformation auch drehen.

Nur wie funktioniert das ? Hat irgendwer von Euch eine Idee ? Hilfe

Gruss der Lars

P.s.: Habe noch ne kleine hässliche Zeichung angehängt...
MisterSeaman Auf diesen Beitrag antworten »

Hallo Lars,

wenn ich dich richtig verstehe möchtest Du aus einer 2D-Karte eine 3D-Ansicht bauen?

Gruß

MisterSeaman
Icebear Auf diesen Beitrag antworten »

Hallo,

naja, ersteinmal reicht mir eine 2D-Ansicht. Obwohl ich denke das der darauf folgende Schritt das Einbinden der Augenhöhe des Fahrers sein wird. Aber ein Schritt nach dem Anderen Augenzwinkern

Gruss Lars
MisterSeaman Auf diesen Beitrag antworten »

Also soll man (nach Deiner Zeichnung) das Auto von oben sehen ("Vogelperspektive")?
Icebear Auf diesen Beitrag antworten »

Hallo,

ja so habe ich mir das ersteinmal vorgestellt. Habe mich ein wenig ungeschickt ausgedrückt.
Also die Koordinaten sollen praktisch so gedreht werden, dass die aktuelle Position des Wagens immer auf den Koordinaten 10|0 liegt, und die nachfolgenden Koordinatenpunkte "angepasst" werden.

Meine Überlegung geht gerade in die Richtung, dass ich den aktuellen Punkt und den nachfolgenden Punkt nehme, und irgendwie über die Winkel herauszufinden, wie die nachfolgenden Punkte zu berechnen sind.

Wobei es da ja wieder die 4 Fälle gibt (bei 2 aufeinanderfolgenden Punkten), dass X1>X2 /Y1>Y2, X1<X2/Y1<Y2, X1>X2/Y1<Y2 und X1<X2/Y1>Y2.
Nach dieser Unterscheidung richten sich ja die verschiedenen Winkel... Aber irgendwie habe ich gerade ne Blockade ...
Lars

Edit: Da fällt mir ein, dass in der Zeichnung zwar jeweils 2 Linien zu sehen sind, aber nur mit einer gerechnet wird.. Habe sie nur zur Anschauung eingefügt. Der 2. Streckenrand wird automatisch berechnet.
Icebear Auf diesen Beitrag antworten »

Hallo,

habe hier nochmal eine Zeichnung gemacht um zu verdeutlichen, was ich meine (hier zum Beispiel der Fall, dass X1>X2 / Y1>Y2).

Gruss und danke schonmal
Lars
 
 
Leopold Auf diesen Beitrag antworten »

Und wie wäre es, wenn du nur noch relativ arbeitetest?

Es seien die Punkte deines Polygonzuges. Der Polygonzug ist dann eindeutig bestimmt durch die Angabe von

.

Hierbei sind die der Reihe nach die Streckenlängen des Polygonzuges und die die Winkel, unter dem die neue Richtung von der alten bei Drehung gegen den Uhrzeigersinn abweicht. Und ist der Startwinkel zur Horizontalen (siehe Zeichnung unten).
Für den transformierten Polygonzug mußt du nur zwei Daten ändern: Startpunkt und Startwinkel. Alles andere bleibt:




Setzt man

,

so gilt:





Und umgekehrt kannst du die kartesischen Koordinaten iterativ bestimmen gemäß



Für den Vektor ist dabei definiert.
Icebear Auf diesen Beitrag antworten »

Hallo,

das sieht nach genau dem aus, was ich gesucht habe. Nur habe ich noch ein paar Probleme damit. Meine Strecken zwischen den einzelen Punkten sind immer 1.

Und wie berechne ich die ? Sie bezeichnen ja die Strecken zwischen 2 Punkten, oder sehe ich das falsch ?

Also ich habe hier mal 5 Punkte und komme leider mit den Formeln nicht klar :

Zitat:
X = 3.0000 3.9650 4.0754 5.0403 5.4484
Y= 2.0000 1.7376 0.7437 0.4814 1.3943


Vielleicht könntest Du mir nen kleinen Tip geben, wie ich anfange ?


Gruss und danke für die Mühen
Lars
Leopold Auf diesen Beitrag antworten »

ist der Vektor, für den ein Pfeil von nach zeigt. Du berechnest ihn durch Differenzbildung "Endpunkt minus Anfangspunkt" (Reihenfolge beachten). Wenn also ist, so gilt:

Die Länge dieses Vektor (ich habe sie oben genannt) berechnest du so:

Aber wenn du von vorneherein schon weißt, daß diese Längen alle 1 sind, brauchst du sie ja erst gar nicht zu berechnen. Auch die Brüche in den arccos-Formeln verschwinden dann. Im Zähler der arccos-Formel steht das Skalarprodukt zweier Vektoren.
Leopold Auf diesen Beitrag antworten »

ist der Vektor, für den ein Pfeil von nach zeigt. Du berechnest ihn durch Differenzbildung "Endpunkt minus Anfangspunkt" (Reihenfolge beachten). Wenn also ist, so gilt:

Die Länge dieses Vektor (ich habe sie oben genannt) berechnest du so:

Aber wenn du von vorneherein schon weißt, daß diese Längen alle 1 sind, brauchst du sie ja erst gar nicht zu berechnen. Auch die Brüche in den arccos-Formeln verschwinden dann. Im Zähler der arccos-Formel steht das Skalarprodukt zweier Vektoren.

Edit:

Ich zeige dir einmal den Anfang der Berechnung der Kette
.
(Ich habe die ganzen Längen also schon einmal auf 1 gesetzt.)

vorläufiges mit

Jetzt geht es oben weiter:

(Winkel im Bogenmaß)

Ob dieser Winkel der richtige ist, muß jetzt noch mit der Determinantenbedingung überprüft werden. Gegebenenfalls, nämlich bei negativer Determinante, ist er noch von abzuziehen.



Der richtige Winkel ist also


Und bei so Zahlenrechnungen garantiere ich für nichts. Du solltest das alles also noch einmal genau nachrechnen.
Icebear Auf diesen Beitrag antworten »

Ahh danke :]

Ich denke das hilft mir weiter. Ich werds nachher mal ausprobieren.

Gruss Lars
Leopold Auf diesen Beitrag antworten »

Ich habe an meinen letzten Beitrag noch ein Edit angefügt.
Icebear Auf diesen Beitrag antworten »

Juchu,

es klappt Tanzen Tanzen Tanzen

Danke an Dich Leopold. Habe noch ne Winkelverschiebung mit reingebracht, so dass der 2. Punkt im 90° Winkel zur X-Achse auf dem ersten steht.

Sooo, jetzt kann ich wieder ruhig schlafen smile

Gruss ein glücklicher Lars
Neue Frage »
Antworten »



Verwandte Themen