Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define temop2 template<size_t R1, size_t C1, size_t R2, size_t C2, class T>
- #define temop1 template<size_t R, size_t C, class T>
- #define vec_ini _Mat(vector<vector<T>> (R, vector<T> (C, 0.)))
- #define x _Mat[0][0]
- #define y _Mat[1][0]
- #define z _Mat[2][0]
- template<size_t R, size_t C, class T> struct Matrix
- {
- Matrix (): vec_ini
- {}
- Matrix (T _x, T _y, T _z): vec_ini
- {
- _Mat[0][0] = _x;
- _Mat[1][0] = _y;
- _Mat[2][0] = _z;
- }
- Matrix (T _x, T _y): vec_ini
- {
- _Mat[0][0] = _x;
- _Mat[1][0] = _y;
- }
- Matrix (Matrix<R, C, T>& v): vec_ini
- {
- *this = v;
- }
- vector<T>& operator [] (const int i)
- {
- assert (i >= 0 && i < R);
- return _Mat[i];
- }
- Matrix<R, C, T>& operator = (Matrix<R, C, T> &m)
- {
- for(size_t i = R; i--; )
- for(size_t j = C; j--; )
- _Mat[i][j] = m[i][j];
- return *this;
- }
- vector<vector<T> > _Mat;
- };
- typedef Matrix<2, 1, float> Vec2f;
- typedef Matrix<3, 1, float> Vec3f;
- typedef Matrix<2, 1, int> Vec2i;
- typedef Matrix<3, 1, int> Vec3i;
- Vec3f m2v (Matrix<4, 1, float> m)
- {
- return Vec3f (m[0][0]/m[3][0], m[1][0]/m[3][0], m[2][0]/m[3][0]);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement