Pointer/Array Problem
-
Hallo,
ich habe ein struct definiert, das unteranderem eine Transformationsmatrix enthält (definiert als float transformations[16]). Jetzt möchte ich diese Matrix mit einer anderen multiplizieren, dafür habe ich diese Funktion geschrieben:void matrixMultiplication(float (*m1)[16], float m2[16]) { float result[16]; for(int i = 0; i < 16; i++) result[i] = 0; for(int i = 0; i < 4; i++) { float row2[4] = {m2[4*i+0], m2[4*i+1], m2[4*i+2], m2[4*i+3]}; for(int j = 0; j < 4; j++) { result[i*4+j] = *m1[0+j]*row2[0] + *m1[4+j]*row2[1] + *m1[8+j]*row2[2] + *m1[12+j]*row2[3]; } } for(int i = 0; i < 16; i++) *m1[i] = result[i]; }
der Aufruf sieht so aus:
matrixMultiplication(&selected->transformations, matrix);
wobei transformations der float[16] aus besagtem struct ist und matrix ebenfalls als float[16] definiert ist. Der Code kompiliert zwar, aber leider wird die Matrix nicht verändert. Ich hab schon diverse Varianten ausprobiert auch habe ich schon probiert MatrixMultiplication als float[16] zu definieren, da bin ich aber nichtmal soweit gekommen, dass der Code kompiliert.
Wäre nett, wenn mir wer die richtige Pointer-Klammer-Kombination für eine der beiden Varianten verraten könnte
, ich komm damit noch nicht so ganz klar.
-
Arrays werden im Standard-C++ automatisch in Pointer umgewandelt, es sollte eigentlich ein simples
void matrixMultiplication(float m1[16], float m2[16]) {}
reichen um Werte in m1 zurückzuschreiben.
-
Super, jetzt geht's. Dann habe ich es mir ja unnötig schwer gemacht. Vielen Dank!