Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 08:06

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Matrix multiplikation
BeitragVerfasst: So Sep 19, 2010 20:38 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Sep 19, 2007 21:36
Beiträge: 46
Hi, hab mal eine granz einfache Frage.

Ich bin gerade dabei, gwtgl zu lernen und muss dafür die Grundlegenden Funktionen, wie translate, rotate etc selbst nachbauen.

Allerdings scheitert das schon an den Grundlagen.

Meine Frage ist:
Wie genau werden zwei Matrizen multipliziert (glMultMatrix)?
Werden die Elemente der Matrix elementar multipliziert oder wird das Kreuzprodukt oder ähnliches gebildet?

Danke schonmal =)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Matrix multiplikation
BeitragVerfasst: So Sep 19, 2010 21:10 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Das wird in unseren Mathe Tutorials (und bei Wikipedia) ausführlich erläutert.
Auch zu empfehlen ist das "CompGeoScript", ein PDF von der TU Chemnitz aus unserer Link Sektion.
Da das dort gut erklärt ist, würde ich das gern vermeiden nochmal hier alles auszuformulieren. Aber wenn nach der Lektüre noch Fragen sind, bekommst du hier ganz sicher kompetente Antworten. ;)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Matrix multiplikation
BeitragVerfasst: So Sep 19, 2010 21:11 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Wenn du zwei Matrizen A und B multiplizierst, bildest du jeweils das dot-Produkt einer Zeile der Matrix A und einer Spalte der Matrix B. Du nimmst jeweils die Zeile bzw. Spalte desjenigen Elementes der Ergebnismatrix das du berechnen willst. Um also Element (i,j) der neuen Matrix zu berechnen multiplzierst du die i-te Zeile der Matrix A mit der j-ten Spalte der Matrix B.

Um der nächsten Frage vorzubeugen, das dot-Produkt zweier Vektoren ist so definiert das du Elementweise multiplizierst und alles zusammenaddierst. Das hier wäre z.B. das dot-Produkt der 0. Zeile von A mit der 0. Spalte von B:
Code:
A._00*B._00 + A._01*B._10 + A._02*B._20 + A._03*B._30


Um dich direkt mit Code zu versorgen:
Code:
   /** multipy matrix * matrix */
   public Matrix44d mult(Matrix44d m) {
      return new Matrix44d(
         (_00*m._00 + _01*m._10 + _02*m._20 + _03*m._30),
         (_00*m._01 + _01*m._11 + _02*m._21 + _03*m._31),
         (_00*m._02 + _01*m._12 + _02*m._22 + _03*m._32),
         (_00*m._03 + _01*m._13 + _02*m._23 + _03*m._33),

         (_10*m._00 + _11*m._10 + _12*m._20 + _13*m._30),
         (_10*m._01 + _11*m._11 + _12*m._21 + _13*m._31),
         (_10*m._02 + _11*m._12 + _12*m._22 + _13*m._32),
         (_10*m._03 + _11*m._13 + _12*m._23 + _13*m._33),

         (_20*m._00 + _21*m._10 + _22*m._20 + _23*m._30),
         (_20*m._01 + _21*m._11 + _22*m._21 + _23*m._31),
         (_20*m._02 + _21*m._12 + _22*m._22 + _23*m._32),
         (_20*m._03 + _21*m._13 + _22*m._23 + _23*m._33),

         (_30*m._00 + _31*m._10 + _32*m._20 + _33*m._30),
         (_30*m._01 + _31*m._11 + _32*m._21 + _33*m._31),
         (_30*m._02 + _31*m._12 + _32*m._22 + _33*m._32),
         (_30*m._03 + _31*m._13 + _32*m._23 + _33*m._33)
      );
   }



Möglicherweise ist mein WGT als Teil von UltimateConquest etwas für dich. Dort wird nämlich die Mathebibliothek schon mitgeliefert. Es kann allerdings nicht schaden sowas mal selbst implementiert zu haben und dadurch die Mathematik auch wirklich zu verstehen.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Matrix multiplikation
BeitragVerfasst: So Sep 19, 2010 21:23 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Sep 19, 2007 21:36
Beiträge: 46
Vielen Dank für die schnelle Antwort. Werds gleich mal ausprobieren

@Flash: Sorry hätt ich natürlich vorher nachsehn können. Fürs nächste mal :wink:


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]