|
@@ -175,5 +175,66 @@ GLOBALS(2) |
|
|
GLOBALS(3) |
|
|
GLOBALS(3) |
|
|
GLOBALS(4) |
|
|
GLOBALS(4) |
|
|
|
|
|
|
|
|
|
|
|
template <typename T> struct Vec4x4 |
|
|
|
|
|
{ |
|
|
|
|
|
inline Vec4x4() { v[0] = v[1] = v[2] = v[3] = 0; } |
|
|
|
|
|
inline Vec4x4(T val) { v[0] = v[1] = v[2] = v[3] = val; } |
|
|
|
|
|
inline Vec4x4(Vec4<T> v0, Vec4<T> v1, Vec4<T> v2, Vec4<T> v3) |
|
|
|
|
|
{ v[0] = v0; v[1] = v1; v[2] = v2; v[3] = v3; } |
|
|
|
|
|
|
|
|
|
|
|
inline Vec4<T>& operator[](int n) { return v[n]; } |
|
|
|
|
|
inline Vec4<T> const& operator[](int n) const { return v[n]; } |
|
|
|
|
|
|
|
|
|
|
|
inline Vec4x4<T> operator +(Vec4x4<T> const val) const |
|
|
|
|
|
{ |
|
|
|
|
|
Vec4x4<T> ret; |
|
|
|
|
|
for (int j = 0; j < 4; j++) |
|
|
|
|
|
for (int i = 0; i < 4; i++) |
|
|
|
|
|
ret[i][j] = v[i][j] + val[i][j]; |
|
|
|
|
|
return ret; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
inline Vec4x4<T> operator -(Vec4x4<T> const val) const |
|
|
|
|
|
{ |
|
|
|
|
|
Vec4x4<T> ret; |
|
|
|
|
|
for (int j = 0; j < 4; j++) |
|
|
|
|
|
for (int i = 0; i < 4; i++) |
|
|
|
|
|
ret[i][j] = v[i][j] - val[i][j]; |
|
|
|
|
|
return ret; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
inline Vec4x4<T> operator *(Vec4x4<T> const val) const |
|
|
|
|
|
{ |
|
|
|
|
|
Vec4x4<T> ret; |
|
|
|
|
|
for (int j = 0; j < 4; j++) |
|
|
|
|
|
for (int i = 0; i < 4; i++) |
|
|
|
|
|
{ |
|
|
|
|
|
T tmp = 0; |
|
|
|
|
|
for (int k = 0; k < 4; k++) |
|
|
|
|
|
tmp += v[k][j] * val[i][k]; |
|
|
|
|
|
ret[i][j] = tmp; |
|
|
|
|
|
} |
|
|
|
|
|
return ret; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
inline Vec4<T> operator *(Vec4<T> const val) const |
|
|
|
|
|
{ |
|
|
|
|
|
Vec4<T> ret; |
|
|
|
|
|
for (int j = 0; j < 4; j++) |
|
|
|
|
|
{ |
|
|
|
|
|
T tmp = 0; |
|
|
|
|
|
for (int i = 0; i < 4; i++) |
|
|
|
|
|
tmp += v[i][j] * val[i]; |
|
|
|
|
|
ret[j] = tmp; |
|
|
|
|
|
} |
|
|
|
|
|
return ret; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Vec4<T> v[4]; |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
typedef Vec4x4<float> float4x4; |
|
|
|
|
|
typedef Vec4x4<int> int4x4; |
|
|
|
|
|
|
|
|
#endif // __DH_MATRIX_H__ |
|
|
#endif // __DH_MATRIX_H__ |
|
|
|
|
|
|