Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Matrixarrays multiplizieren » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 5 Beiträge
Tommy1234

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

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.

Dateianhänge:
txt Program.txt (4,21 KB, 288 mal heruntergeladen)
txt Matrix.txt (2 KB, 282 mal heruntergeladen)
txt Tools.txt (4,15 KB, 288 mal heruntergeladen)
txt Vector3D.txt (2 KB, 285 mal heruntergeladen)
txt Point3D.txt (170 Byte, 252 mal heruntergeladen)
as_string

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
Tommy1234

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
Tommy1234 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