@@ -86,22 +86,22 @@ class Mat {
8686 for (int row = 0 ; row < N; ++row)
8787 for (int col = 0 ; col < N; ++col)
8888 for (int k = 0 ; k < N; ++k)
89- vals_res[row * N + col] += vals[row * N + k] * m. data ()[k * N + col];
89+ vals_res[row * N + col] += vals[row * N + k] * m[k][ col];
9090
9191 return Mat (vals_res);
9292 }
9393
9494 template <typename U>
9595 Mat operator +(const Mat<U, N> &m) const {
9696 T vals_res[N * N]{};
97- for (int i = 0 ; i < N * N; ++i) vals_res[i] = vals[i] + m. data ()[i ];
97+ for (int i = 0 ; i < N * N; ++i) vals_res[i] = vals[i] + m[i / N][i % N ];
9898 return Mat (vals_res);
9999 }
100100
101101 template <typename U>
102102 Mat operator -(const Mat<U, N> &m) const {
103103 T vals_res[N * N]{};
104- for (int i = 0 ; i < N * N; ++i) vals_res[i] = vals[i] - m. data ()[i ];
104+ for (int i = 0 ; i < N * N; ++i) vals_res[i] = vals[i] - m[i / N][i % N ];
105105 return Mat (vals_res);
106106 }
107107
@@ -204,7 +204,7 @@ class Mat {
204204
205205 return Mat (res);
206206 }
207- const T *data () { return vals; }
207+ T *data () { return vals; }
208208};
209209
210210// usage Mat3<double> or Mat3<float>
@@ -231,7 +231,7 @@ Mat<T, 4> mat3_to_mat4(const Mat<T, 3> &m) {
231231 for (int i = 0 ; i < 16 ; ++i) {
232232 if ((i & 3 ) == 3 || (i >> 2 ) == 3 ) res_arr[i] = (i == 15 ) ? 1 : 0 ;
233233 else
234- res_arr[i] = m. data ()[(i & 3 ) * 3 + (i >> 2 ) ];
234+ res_arr[i] = m[i >> 2 ][i & 3 ];
235235 }
236236 return Mat<T, 4 >(res_arr);
237237}
0 commit comments