diff options
author | Vegard Storheil Eriksen <zyp@jvnv.net> | 2010-06-13 16:02:07 +0200 |
---|---|---|
committer | Vegard Storheil Eriksen <zyp@jvnv.net> | 2010-06-13 16:02:07 +0200 |
commit | f1c0772af07f0339bda5a9abeaf4f869de9868e1 (patch) | |
tree | f85ba8441d0727cd467591e37003f84fac9579ef /matrix.cpp | |
parent | 63ffd831743289112eb3dcf07aa3cc4afd6dc81b (diff) |
Added vector- and matrix-classes.
Diffstat (limited to 'matrix.cpp')
-rw-r--r-- | matrix.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/matrix.cpp b/matrix.cpp new file mode 100644 index 0000000..5970123 --- /dev/null +++ b/matrix.cpp @@ -0,0 +1,45 @@ +#include "matrix.h" + +#include <cmath> + +Matrix2::Matrix2() { + m[0][0] = m[0][1] = + m[1][0] = m[1][1] = 0; +} + +Matrix2::Matrix2(float m00, float m01, float m10, float m11) { + m[0][0] = m00; + m[0][1] = m01; + m[1][0] = m10; + m[1][1] = m11; +} + +Matrix2 Matrix2::operator*(const Matrix2& mat) { + return Matrix2( + m[0][0] * mat.m[0][0] + m[0][1] * mat.m[1][0], + m[0][0] * mat.m[0][1] + m[0][1] * mat.m[1][1], + m[1][0] * mat.m[0][0] + m[1][1] * mat.m[1][0], + m[1][0] * mat.m[0][1] + m[1][1] * mat.m[1][1]); +} + +Matrix2 Matrix2::operator*(float f) { + return Matrix2( + m[0][0] * f, + m[0][1] * f, + m[1][0] * f, + m[1][1] * f); +} + +Vector2 Matrix2::operator*(const Vector2& v) { + return Vector2( + m[0][0] * v.x + m[0][1] * v.y, + m[1][0] * v.x + m[1][1] * v.y); +} + +Matrix2 rotation_matrix(float rot) { + float s = sinf(rot); + float c = cosf(rot); + return Matrix2( + c, -s, + s, c); +}
\ No newline at end of file |