Forum: Mikrocontroller und Digitale Elektronik Problem mit Koordinatensystemtransformation


von Gor Na Vid (Gast)


Lesenswert?

Hallo,

wenn ich den Ursprung [0 0 0] eines Koordinatensystems in ein anderes 
Koordinatensystem transformieren möchte, dann kommt ja immer wieder [0 0 
0], also der Ursprung raus, egal mit welcher Transformationsmatrix man 
ihn multipliziert.
Das kann doch eigentlich nicht sein, oder?

von Karl H. (kbuchegg)


Lesenswert?

Gor Na Vid schrieb:
> Hallo,
>
> wenn ich den Ursprung [0 0 0] eines Koordinatensystems in ein anderes
> Koordinatensystem transformieren möchte, dann kommt ja immer wieder [0 0
> 0], also der Ursprung raus, egal mit welcher Transformationsmatrix man
> ihn multipliziert.
> Das kann doch eigentlich nicht sein, oder?

Wenn dein Programm korrekt ist UND die Matrix keine Einheitsmatrix ist, 
dann kann das nicht sein.

Du hast also 2 Voraussetzungen die erfüllt sein müssen. Da du eine 
Einheitsmatrix wohl erkennen würdest, wenn du sie siehst, wird dann wohl 
Voraussetzung 1 nicht erfüllt sein: Dein Programm ist nicht korrekt

von hp-freund (Gast)


Lesenswert?


von Yalu X. (yalu) (Moderator)


Lesenswert?

Mit einer 3×3-Matrix ist für dreidimensionale Koordinaten keine
Translation darstellbar.

Mit 4×4-Matrizen gehen auch Translationen und noch viel mehr:

  http://de.wikipedia.org/wiki/Homogene_Koordinaten

von Andreas W. (andy_w)


Lesenswert?

Hallo,
eine Translation (Verschiebung) ist ja auch keine affine Abbildung... In 
der 3D-Graphik verwendet man daher homogene Koordinaten, X, Y, Z und 
zusätzlich noch W, das immer 1 ist. Das ist jetzt eine dreidimensionale 
Hyperebene im 4-dimensionalen Raum, wenn man die dreht (die Hyperebene 
geht nicht durch den Nullpunkt!) kann man eine Verschiebung innerhalb 
der Hyperebene rerreichen.

Konkrete Matrix:
|a00, a01, a02, v0|
|a10, a11, a12, v1|
|a20, a21, a22, v3|
|  0,   0,   0,  1|

Die Untermatrix a00-a22 entspricht der normalen Matrix, z.B. für 
Drehungen, v0, v1, und v2 sind dann Null. Ist a00-a22 Null, findet eine 
Verschiebung um (v0, v1, v2) für (x,y,z,w) statt, w muß vorher 1 sein 
und ist hinterher immer noch 1. Führt man mehrere Operationen aus 
(Verschiebungen, Drehungen, Streckungen usw.), werden die entsprechenden 
4*4 Matrizen multipliziert, das Produkt auf den Vektor (x,y,z,w) führt 
dann alle Operationen auf einmal aus, w bleibt trotzdem immer 1.

Gruß
Andy_W

von Gor Na Vid (Gast)


Lesenswert?

Ah, ich verstehe. Danke für eure netten und ausführlichen Antworten!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.