Der Code, den Sie haben, ist hart (als Außenseiter) abzuarbeiten, da wir wissen müssen, wie die Klasse Matrixf
funktioniert. Ich werde trotzdem eine Methode skizzieren, die Sie in die richtige Richtung weisen kann. Die einfachste Art und Weise Sie eine Matrix in C/C darstellen könnte ++ ist einfach eine 2D-Array von Fließkommazahlen wie folgt:
float matrix[3][3]; // 3x3 Matrix
Betrachtet man bereits die Mathematik wissen, ich glaube, alles, was Sie brauchen einige Hinweise in Bezug auf die Codierung ist, was du brauchst. Zu multiplizieren Elemente von zwei dieser Matrizen einfach dies zu tun:
matrixC[0][1] = matrixA[0][0] * matrixB[0][0];
Dies speichert das Ergebnis der linken oberen Element matrixA
Multiplikation und die linke obere Element von matrixB
in der oberen Mittelelement von matrixC
. Im Wesentlichen stellt die erste eckige Klammer die Reihe und die zweite eckige Klammer stellt die Spalte (aber es ist völlig bis zu Ihnen ist, die bestellen möchten Sie die Zeilen und Spalten sein, nur so lange, wie Sie konsequent bleiben).
float vector[3]; // 3d vector
Natürlich, da wir C++ verwenden, es gibt schönere Möglichkeiten, dies zu tun:
Vektoren können in ähnlicher Weise dargestellt werden. Es scheint, dass Sie einige Ressourcen haben, die eine klassenzentrierte Methode dafür beschreiben. Das Schöne an einer Klasse basierende Methode ist möglich abstrakte Multiplikationsoperationen in einer ordentlichen Art und Weise wie folgt aus:
Matrix3x3f matrix(1.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 1.0f);
Vector3f vector(0.2f, 1.4f, -3.1f);
matrix.multVec(vector);
... oder etwas in dieser Richtung.
(Es ist auch erwähnenswert, dass es Bibliotheken gibt, die diese Art der Sache bereits tun, und auch effizient.)
In einem Kommentar unten sagten Sie, dass Sie Ihr "Coding-Wissen" verbessern möchten, aber gleichzeitig sagten Sie, dass Sie Code aus dem Internet bekommen haben. Vielleicht sollten Sie versuchen, eine Matrix-Klasse von Grund auf neu zu implementieren. –
Ja, ich versuche, mein Wissen zu erweitern, indem ich einfache Methoden zuerst mache, weshalb ich den Matrix-Ops-Quellcode genommen habe, der jenseits meines Verständnisses liegt. Ich versuche zuerst eine einfache Methode wie oben zu machen. – Ice
@Ice: Der Versuch, Code zu verwenden, den Sie überhaupt nicht verstehen, wird Ihr Wissen nicht verbessern, und dies ist keine "einfache" Methode. Wenn Sie lernen wollen, implementieren Sie Ihre eigene Matrix-Klasse von Grund auf und schreiben Sie Ihre eigenen Multiplikationsroutinen. Dies wird eine viel bessere Übung sein. – SigTerm