Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

11

25.09.2006, 16:03

Allgemein: Was passiert bei einer Invertierung und anschließender Transponierung einer Matrix... Also ich mein, was wird dann aus jener?
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

12

25.09.2006, 16:37

die inverse transponierte ;)

angenommen wir haben eine (nicht unbedingt orthogonale) transformationsmatrix M.
der seitenvektor v eines dreiecks als differenz zweier dreieckspunkte kann mit der matrix M korrekt transformiert werden.
der normalvektor n des dreiecks jedoch nicht (stell dir vor die matrix würde z.b. entlang der y achse skalieren, der normalvektor steht dann nicht mehr wirklich normal).

wir wissen aber, dass das punktprodukt von seiten und normalvektor 0 sein muss. also n dot v = 0.
wir wollen nun eine matrix A finden, so dass gilt

(A*n) dot (M*v) = 0

betrachten wir die vektoren als 3x1 matrizen, so kann man das punktprodukt ja auch schreiben als (^ steht für transponiert)

n^ * v

damit gilt:

(A*n)^ * (M*v) = 0

das ist gleichbedeutend mit

n^ * A^ * M * v = 0

da n^ * v = 0, ist die gleichung erfüllt wenn A^ * M = I
und dies gilt eben genau dann, wenn A die inverse transponierte von M ist.

eine matrix gilt als orthogonal, wenn die inverse gleich der transponierten ist, und da jede rotationsmatrix orthogonal ist, kann man normalvektoren mit rotationsmatrizen immer direkt transformieren.

merke: ich hab oben verwendet was man oft als "operatorschreibweise" bezeichnet, also vektoren werden als 3x1 matrix dargestellt und mit einer matrix M transformiert indem man matrix * vektor rechnet.
das is die variante die z.b. opengl verwendet. directx machts umgekehrt.
dort sind vektoren 1x3 matrizen und man rechnet vektor * matrix.
ist eine frage von geschmack/konvention, ändert aber am ergebnis nichts:

n dot v = n * v^

(n*A) * (v*M)^ = 0
n * A * M^ * v^ = 0
...

ich hoffe ein wenig licht ins dunkel gebracht zu haben :)

13

16.01.2010, 20:37

Zitat von »"dot"«

ist eine frage von geschmack/konvention, ändert aber am ergebnis nichts:

n dot v = n * v^



n dot v = n^ * v
nicht umgekehrt.. ^^
dieses Gesetz bleibt erhalten. Sonst hättest du eine n x n - Matrix. :)

Ach ja.. Danke für deine fixe Antwort

the[V]oid

Alter Hase

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

14

16.01.2010, 20:42

Zitat von »"Brainsmith"«

Ach ja.. Danke für deine fixe Antwort


Haben die Totengräber wieder zugeschlagen? :roll:
<< an dieser Stelle ist eine Signatur verstorben >>

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

15

16.01.2010, 20:46

Zitat von »"Brainsmith"«

n dot v = n^ * v
nicht umgekehrt.. ^^
dieses Gesetz bleibt erhalten. Sonst hättest du eine n x n - Matrix. :)


nope n * v^ stimmt schon.
n und v sind Zeilenvektoren sonst würde v * M gar nicht funktionieren ;)

Zitat von »"the[V«

oid"]

Zitat von »"Brainsmith"«

Ach ja.. Danke für deine fixe Antwort


Haben die Totengräber wieder zugeschlagen? :roll:


Das bezog sich auf das: https://www.spieleprogrammierer.de/phpBB2/viewtopic.php?p=155671&highlight=#155671 ;)

16

16.01.2010, 20:47

Zitat


Ach ja.. Danke für deine fixe Antwort


Nach 4 Jahren :lol: [/quote][/code]

17

16.01.2010, 20:50

Eine Sache noch:

Zitat von »"dot"«

n^ * A^ * M * v = 0

da n^ * v = 0, ist die gleichung erfüllt wenn A^ * M = I
und dies gilt eben genau dann, wenn A die inverse transponierte von M ist.


muss nicht sein, auch wenns sonst ein chaos mit der Orientierung gibt..
A^ * M darf auch -Id sein.. also kein "genau dann wenn", sondern nur "wenn" ^^
genau dann wenn <=> Äquivalenz
wenn <=> Implikation

Das mit der fixen Antwort war auf einen Post in einem anderen thread bezogen.. ^^ Aber aus deiner Sicht sicher lustig... ich kugel mich hier immernoch :)

@dot:
mit den Zeilenvektoren geb ich dir recht.. macht sonst wirklich keinen sinn. Gewohnheit hat mich kirre gemacht..

Werbeanzeige