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

Aktuelle Zeit: Do Mär 28, 2024 20:52

Foren-Übersicht » Programmierung » Mathematik-Forum
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mo Jan 13, 2014 20:21 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Das dies ungleich ist ist mit unterdessen klar.

Code:
  1. meinMatrix * LocalMatrix <> LocalMatrix * meinMatrix


Diese Varianten führen alle zum gleichen Ziel, egal wie ich dir Klammern setze.
Ich weis, im Shader dies zu berechnen ist Müll.

Code:
  1. gl_Position = CameraMatrix * meinMatrix * LocalMatrix * FlugelMatrix * vec4(inPos, 1.0);
  2. gl_Position = CameraMatrix * (meinMatrix * LocalMatrix) * FlugelMatrix * vec4(inPos, 1.0);
  3. gl_Position = CameraMatrix * meinMatrix * LocalMatrix * (FlugelMatrix * vec4(inPos, 1.0));
  4. gl_Position = CameraMatrix * meinMatrix * ((LocalMatrix * FlugelMatrix) * vec4(inPos, 1.0));


Verstehe ich das richtig oder habe ich das was übersehen ?

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Jan 13, 2014 20:29 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 587
Programmiersprache: C++
Ja, das ist richtig. Bei der Matrixmultiplikation gilt das Assoziativgesetz (man darf Klammern setzen, wie man will), nicht jedoch das Kommutativgesetz.

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Jan 13, 2014 22:48 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Danke!

Somit wird mir einiges leichter gemacht.

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Mär 14, 2014 20:58 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Ich habe gerade etwas interessantes zur Matrixmultiplikation endeckt.

So kann man die Matrix multiplizieren wie mir glsl.

Code:
  1. program project1;
  2.  
  3. type
  4.   TMatrix = array[0..3, 0..3] of single;
  5.  
  6.  
  7. var
  8.   m1, m2, m3: TMatrix;
  9.  
  10.  
  11.   operator * (const m1, m2: TMatrix) res: TMatrix;
  12.   var
  13.     i, j, k: integer;
  14.   begin
  15.     for i := 0 to 3 do begin
  16.       for j := 0 to 3 do begin
  17.         Res[i, j] := 0;
  18.         for k := 0 to 3 do begin
  19.           Res[i, j] := Res[i, j] + m2[i, k] * m1[k, j];
  20.         end;
  21.       end;
  22.     end;
  23.   end;
  24.  
  25. begin
  26.   m1 := m3 * m2;
  27. end.                  

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Mär 17, 2014 21:25 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Kleine Randnotiz:
Eben da man die Klammern setzen kann wie man will kann man sie so setzen das die Anzahl der notwendigen Operationen minimal ist:
Code:
  1. gl_Position = CameraMatrix * meinMatrix * LocalMatrix * FlugelMatrix * vec4(inPos, 1.0); // 52 Dot-Produkte (vec4)
  2. gl_Position = CameraMatrix * (meinMatrix * (LocalMatrix * (FlugelMatrix * vec4(inPos, 1.0)))); // 20 Dot-Produkte (vec4)

_________________
Yeah! :mrgreen:


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 11 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.067s | 17 Queries | GZIP : On ]