Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- Matrixarrays multiplizieren (http://www.informatikerboard.de/board/thread.php?threadid=3973)


Geschrieben von Tommy1234 am 19.07.2018 um 19:55:

  Matrixarrays multiplizieren

Hallo,

ich habe eine 4x4 Matrix als zweidimensionales Array sowie einen Vektor (Größe 4) als eindimensionales Array vorliegen.

Wie multipliziert man die beiden so, dass wieder ein Vektor entsteht?

Ansatz:


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:

public static Vector3D multipliziereMatrixmitVector(Matrix a,Vector3D b) {
		
	int m = a.getColumns();
	int n = a.getRows();
	    
	Vector3D vec = new Vector3D(4,0.0f,0.0f,0.0f,0.0f);
	    
	 for (int spalte = 0; spalte < m; spalte++) {
	    for (int zeile = 0; zeile < n; zeile++) {
	         vec.vector[zeile] +=  (a.getMatrix()[zeile][spalte] * b.vector[zeile]);
	    }
	}
	    
        return vec;
}



Die Matrix wird mir korrekt auf der Konsole ausgegeben.

Wäre für Hilfe dankbar.

Gruß Tommy



Geschrieben von Tommy1234 am 19.07.2018 um 19:58:

 

Nachtrag:

Matrix Input: 1 0 0 1.5
0 1 0 1.0
0 0 1 1.5
0 0 0 1

Vektor Input: x= 0 , y= 1.0, z=0 , t=1

bekomme so anstatt 1,5 2 1,5 1 ein anderes Ergebnis nämlich 0 2 0 1



Geschrieben von as_string am 20.07.2018 um 10:19:

 

Ich kenne ja die Matrix Klasse nicht und weiß nicht, wie das 2D-Array dann angeordnet ist (also ob der erste Index tatsächlich Zeile oder Spalte ist), aber was mir auffällt:
Du gehst bei der Multiplikation ja jede Zeile der Matrix durch und multiplizierst innerhalb der Zeile jede einzelnen Wert der Spalten mit den Werten im Vektor. Deine Schleifen sind aber verkehrt herum: Du müsstest bei der äußeren Schleife über die Zeilen gehen und in der inneren über die Spalten.
Überlege nochmal ganz genau, wo Du genau Zeile und wo Spalte hast und so weiter!

Gruß
Marco



Geschrieben von Tommy1234 am 20.07.2018 um 13:29:

 

Hallo,

körpertransformationen gehen jetzt allerdings nur translation und skalierung.

Ich möchte den körper auch drehen können, allerdings ist die Dreheung meiner meinung nach falsch, denn er dreht sich nur um zwei punkte mit minimaler abweichung.


Ganzer kompilierbarer Code im Anhang.



Geschrieben von Tommy1234 am 20.07.2018 um 14:14:

 

Ok, habs gerade gewschafft, melde mich aber hier nochmal wegen view sowie projektionsmatrix.....


Forensoftware: Burning Board, entwickelt von WoltLab GmbH