diff --git a/include/uml/Vector3.h b/include/uml/Vector3.h index 1b7130f..3bc9bc3 100644 --- a/include/uml/Vector3.h +++ b/include/uml/Vector3.h @@ -58,7 +58,7 @@ namespace uml { return *reinterpret_cast(this); } - [[nodiscard]] static Vector3 CreateVelocity(const Vector3& angles, const float length); + [[nodiscard]] static Vector3 CreateVelocity(const Vector3& angles, float length); [[nodiscard]] float Sum() const; [[nodiscard]] float Sum2D() const; [[nodiscard]] Vector3 ViewAngleTo(const Vector3& other) const; diff --git a/include/uml/matrix.h b/include/uml/matrix.h index ebf8dba..25a1305 100644 --- a/include/uml/matrix.h +++ b/include/uml/matrix.h @@ -17,7 +17,7 @@ namespace uml matrix(const matrix &other); - matrix(size_t rows, size_t columns, float *pRaw); + matrix(size_t rows, size_t columns, const float *pRaw); matrix(matrix &&other) noexcept; @@ -30,7 +30,7 @@ namespace uml float &at(size_t iRow, size_t iCol); float get_sum(); - + void set_from_raw(const float* pRawMatrix); matrix transpose(); void set(float val); @@ -56,7 +56,7 @@ namespace uml [[nodiscard]] float alg_complement(size_t i, size_t j) const; [[nodiscard]] float det() const; - + [[nodiscard]] const float* raw() const; matrix &operator=(const matrix &other); matrix &operator=(matrix &&other) noexcept; diff --git a/source/matrix.cpp b/source/matrix.cpp index 944390b..bb511ff 100644 --- a/source/matrix.cpp +++ b/source/matrix.cpp @@ -50,7 +50,7 @@ namespace uml at(i, j) = other.at(i, j); } - matrix::matrix(const size_t rows, const size_t columns, float *pRaw) + matrix::matrix(const size_t rows, const size_t columns, const float *pRaw) { m_rows = rows; m_columns = columns; @@ -285,4 +285,15 @@ namespace uml {screenWidth / 2.f, screenHeight / 2.f, 0.f, 1.f}, }); } + + const float * matrix::raw() const + { + return m_pData.get(); + } + + void matrix::set_from_raw(const float *pRawMatrix) + { + for (size_t i = 0; i < m_columns*m_rows; ++i) + at(i / m_rows, i % m_columns) = pRawMatrix[i]; + } } \ No newline at end of file