From b59b6d85c00294164b3a9ee56de6b03a82cdd9a7 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Fri, 8 Aug 2014 22:14:20 -0700 Subject: [PATCH] Add Matrix4, implement TranslationMatrix() --- src/basics/SConscript | 1 + src/basics/basics.hh | 10 ---------- src/basics/matrix.cc | 29 +++++++++++++++++++++++++++++ src/basics/matrix.hh | 7 +++++++ 4 files changed, 37 insertions(+), 10 deletions(-) create mode 100644 src/basics/matrix.cc diff --git a/src/basics/SConscript b/src/basics/SConscript index 873ba8c..0daa482 100644 --- a/src/basics/SConscript +++ b/src/basics/SConscript @@ -6,6 +6,7 @@ Import('env') files = [ + 'matrix.cc', 'vector.cc', ] diff --git a/src/basics/basics.hh b/src/basics/basics.hh index 34c9f61..8a556e8 100644 --- a/src/basics/basics.hh +++ b/src/basics/basics.hh @@ -13,14 +13,4 @@ #include "basics/types.hh" #include "basics/vector.hh" - -namespace charles { -namespace basics { - -/** A 4-square matrix */ -typedef Matrix<4> Matrix4; - -} /* namespace basics */ -} /* namespace charles */ - #endif /* __BASICS_BASICS_HH__ */ diff --git a/src/basics/matrix.cc b/src/basics/matrix.cc new file mode 100644 index 0000000..23b28ba --- /dev/null +++ b/src/basics/matrix.cc @@ -0,0 +1,29 @@ +/* matrix.cc + * vim: set tw=80: + * Eryn Wells + */ + +#include "matrix.hh" + + +namespace charles { +namespace basics { + +/* + * charles::basics::TranslationMatrix -- + */ +Matrix4 +TranslationMatrix(const Double& x, + const Double& y, + const Double& z) +{ + Matrix4 m = Matrix4::Identity(); + m(0, 3) = x; + m(1, 3) = y; + m(2, 3) = z; + return m; +} + +} /* namespace mespace */ +} /* namespace charles */ + diff --git a/src/basics/matrix.hh b/src/basics/matrix.hh index 127afcb..1bb0945 100644 --- a/src/basics/matrix.hh +++ b/src/basics/matrix.hh @@ -65,6 +65,13 @@ protected: typedef Matrix<4> Matrix4; +/** + * Create a translation matrix that will translate a vector to the given + * coordinates. + */ +static Matrix4 TranslationMatrix(const Double& x, const Double& y, const Double& z); + + /** Scalar multiplication, scalar factor on the left. */ template Matrix operator*(const Double& lhs, const Matrix& rhs);