diff --git a/include/Geometry/matrix.h b/include/Geometry/matrix.h index 7c72e4418a4b2d2119f0fc94ac30c078147df0af..42e814d136fb6a8498ea457a9581d8db3732d9e6 100644 --- a/include/Geometry/matrix.h +++ b/include/Geometry/matrix.h @@ -161,11 +161,15 @@ class Matrix // Vector / Matrix multiplication template -Vector operator*(const Vector& v, const Matrix& m); +Vector operator*(const Vector& v, const Matrix& m) ; // Scalar / Matrix multiplication template -Matrix operator*(T s, const Matrix& m); +Matrix operator*(T s, const Matrix& m) ; + +// Vector / Transposed vector multiplication +template +Matrix transposed_vectors_mult(const Vector& v1, const Vector& v2) ; /**********************************************/ diff --git a/include/Geometry/matrix.hpp b/include/Geometry/matrix.hpp index 3ade5395ceb19524d85357f8774fedc2a3b121df..85495aa1c60303b25990ceea5e923e1d37283c59 100644 --- a/include/Geometry/matrix.hpp +++ b/include/Geometry/matrix.hpp @@ -405,9 +405,11 @@ bool Matrix::operator==(const Matrix& m) const { template std::ostream& operator<<(std::ostream& out, const Matrix& m) { - for(unsigned int i = 0; i < M; ++i) + for(unsigned int i = 0; i < M; ++i) { for(unsigned int j = 0; j < N; ++j) out << m(i,j) << " " ; + std::cout << std::endl ; + } return out ; } @@ -446,6 +448,15 @@ Matrix operator*(T s, const Matrix& m) return res ; } +template +Matrix transposed_vectors_mult(const Vector& v1, const Vector& v2) { + Matrix res ; + for(unsigned int i = 0; i < M; ++i) + for(unsigned int j = 0; j < N; ++j) + res(i,j) = v1[i] * v2[j] ; + return res ; +} + } // namespace Geom } // namespace CGoGN