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

1

22.03.2011, 09:51

Delta zweier 3D-Matritzen ermitteln

Hi,

folgendes Problem:

Ich habe eine 4x4 3D Matrix, welche z.B. eine Drehung beinhaltet.

Des weiteren habe ich eine zweite 3D Matrix, welche diese Drehung sowie noch einige andere Transformationen beinhaltet.

Jetzt wüsste ich gerne, was genau der Unterschied zwischen den beiden Matritzen ist, sprich welche anderen Transformationen die zweite Matrix noch beinhaltet. Wie kann ich mir eine dritte Matrix berechnen, welche nur noch das Delta beinhaltet?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

22.03.2011, 10:03

Was genau soll das bedeuten? Kannst du das vielleicht mit einem Beispiel was genau du machen willst illustrieren?

3

22.03.2011, 10:16

OK, vielleicht so:

Matrix 1 beinhaltet eine Drehung um 90 Grad.

Matrix 2 beschreibt eine Drehung um 120 Grad und eine Verschiebung.

Das Delta zwischen beiden ist also eine Drehung um 30 Grad und die Verschiebung - und genau dieses Delta möchte ich aus den beiden Matrizen erhalten (in Form einer weiteren Matrix).

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

22.03.2011, 10:19

Und Was genau verpsrichst du dir davon?

5

22.03.2011, 10:38

Ähm ich benötige es einfach in meiner Applikation: da habe ich zwei Geometrien, welche aufeinander aufbauen. Jede besitzt eine eigene Matrix, welche in identischer Weise manipuliert werden, wenn der Benutzer diese Geometrien auf der Oberfläche verändert. Für die Darstellung während der Veränderung ist das erforderlich, da beide Geometrien sichtbar verändert werden sollen. Anschließend erfolgt aber eine Neuberechnung, bei der Geometrie 2 auf Basis der transformierten Geometrie 1 neu erzeugt wird. Diese Neuberechnung soll die Veränderung der Matrix von Geometrie 1 beinhalten.

Der Haken: Geometrie 2 kann seinerseits ebenfalls eine veränderte Matrix beinhalten (plus die während der Darstellung erfolgte Veränderung). Für die Neuberechnung darf die während der Darstellung erfolgte Veränderung nicht mehr in Matrix enthalten sein, da diese sich ja bereits in Geometrie 1 befindet.

Das Ganze ist deswegen so kompliziert, weil ich die Geometrien zusätzlich zwei mal vorhalte: einmal die Urpsrungsdaten und zum anderen die durch die jeweilige Matrix veränderten Daten. Das ist aus Geschwindigkeitsgründen erforderlich, da ich die Daten bei der Darstellung nicht jedes mal neu berechnen kann.

War das jetzt verständlich?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

22.03.2011, 10:45

Ok, also so ganz hab ichs noch nicht verstanden (willst du sowas wie eine Hierarchie von Transformationen machen!?). Aber ich hab dein Eindruck dass du die beiden Matritzen eigentlich von vornherein nicht "in identischer Weise manipulieren" willst!? So wie ich das sehe ist diese Sache von Wegen "Delta" zweier Matritzen nur ein Hack um einen Fehler der in einem vorhergehenden Schritt gemacht wird irgendwie wieder rauszurechnen!? Kannst du nicht einfach den Fehler nicht machen? ^^

Wenn du was fragst ist es jedenfalls immer von Vorteil das eigentliche Problem zu beschreiben und nach einer Lösung dafür zu fragen als zu fragen wie man das was du im Moment für die Lösung hältst umsetzen kann ;)

7

22.03.2011, 10:52

Es gibt keinen Fehler! Beide aufeinander aufbauenden Geometrien müssen allein auf Grund der Aufgabenstellung in dieser Hierarchie angeordnet werden, beide sollen optional separat transformierbar sein, beide sollen gemeinsam transformierbar sein und die zweite Geometrie soll in jedem Fall auf Basis der transformierten ersten Geometrien neu erzeugt werden. Und beide sollen auch - für die Darstellung - während der Editierphase gemeinsam transformiert werden, da es bescheuert aussehen würde, wenn Geometrie 2 einfach hängen bleibt. Das ist schlichtweg die Forderung.

Deswegen: Kann ich das Delta aus zwei Matritzen nun irgend wie ermitteln oder nicht? Es ist ja immer sichergestellt, dass wirklich ein Delta vorhanden ist und sich die Transformationen in beiden Matritzen nicht widersprechen.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

22.03.2011, 10:57

Wenn du von Hierarchie redest, meinst du damit dass die zweite Geometrie an der ersten dranhängt, d.h. wenn die erste verschoben/rotiert wird bewegt sich die zweite entsprechend mit!?

9

22.03.2011, 10:59

Das ist _eine_ Eigenschaft der zweiten Geometrie, ja. Das wird aber nur für die Darstellung gemacht, damit es nicht seltsam aussieht.

Es wäre übrigens schön, wenn wir diese Paralleldiskussion einstellen könnten, die hilft mir bei meiner Frage nämlich kein bisschen weiter.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

22.03.2011, 11:04

Ohne zu wissen was genau du willst kann ich dir leider keine Antwort geben da "das Delta zweier Matritzen" ohne Kontext keinen Sinn ergibt. Matritzen sind Koordinatentransformationen. Das "Delta" das du suchst ist also eine Transformation die Punkte aus einem Koordinatensystem in ein anderes abbildet. Um diese Transformation zu berechnen wärs nun gut zu wissen von welchem System in welches du gerne eine Abbildung hättest und ohne Kontext (den zu ermitteln der Zweck dieser "Paralleldiskussion" wäre) kann ich dir das leider nicht sagen...

Ich kann nur die Vermutung anstellen dass du das "Delta" was du suchst bekommst wenn du die eine Matrix mit der Inversen der anderen Multiplizierst. Da ich aber über dein genaues Problem nicht informiert bin könnte das stimmen, könnte genauso aber sein dass du eigentlich was komplett andres brauchst...

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (22.03.2011, 11:12)


Werbeanzeige