diff --git a/src/basics/basics.hh b/src/basics/basics.hh index 96b8aa2..34c9f61 100644 --- a/src/basics/basics.hh +++ b/src/basics/basics.hh @@ -11,12 +11,14 @@ #include "basics/matrix.hh" #include "basics/types.hh" +#include "basics/vector.hh" namespace charles { namespace basics { -typedef Matrix<4,4> Matrix4; +/** A 4-square matrix */ +typedef Matrix<4> Matrix4; } /* namespace basics */ } /* namespace charles */ diff --git a/src/basics/matrix.hh b/src/basics/matrix.hh index d5bc64f..14c37ec 100644 --- a/src/basics/matrix.hh +++ b/src/basics/matrix.hh @@ -27,7 +27,7 @@ struct Matrix /** Construct an N x M matrix of zeros. */ static Matrix Zero(); - /** + /** * Construct an N x M identity matrix. Identity matrices are always square. * It is a (compile time) error to call Identity on a Matrix class where * N != M. @@ -216,9 +216,9 @@ Matrix::operator*(Matrix rhs) for (int j = 0; j < P; j++) { /* Each cell is Sigma(k=0, M)(lhs[ik] * rhs[kj]) */ const int ij = i*N + j; - mCells[ij] = 0.0; + mData[ij] = 0.0; for (int k = 0; k < M; k++) { - result.mCells[ij] += mCells[i*N + k] * rhs.mCells[k*P + j]; + result.mData[ij] += mData[i*N + k] * rhs.mData[k*P + j]; } } } diff --git a/src/basics/vector.cc b/src/basics/vector.cc index 31842b8..d9c2c73 100644 --- a/src/basics/vector.cc +++ b/src/basics/vector.cc @@ -9,10 +9,25 @@ namespace charles { namespace basics { +/* + * charles::basics::Vector4::Vector4 -- + */ Vector4::Vector4() - : mCells({0.0, 0.0, 0.0, 1.0}) -{ + : Vector4(0, 0, 0) +{ } + +/* + * charles::basics::Vector4::Vector4 -- + */ +Vector4::Vector4(const Double& x, + const Double& y, + const Double& z) +{ + mData[0] = x; + mData[1] = y; + mData[2] = z; + mData[3] = 1.0; } diff --git a/src/basics/vector.hh b/src/basics/vector.hh index c383b19..3c8f8ff 100644 --- a/src/basics/vector.hh +++ b/src/basics/vector.hh @@ -13,7 +13,7 @@ namespace charles { namespace basics { -template +template struct Vector : public Matrix { }; @@ -23,7 +23,7 @@ struct Vector4 : public Vector<4> { Vector4(); - Vector4(Double x, Double y, Double z); + Vector4(const Double& x, const Double& y, const Double& z); Double& X(); Double& Y();