big internal rework
This commit is contained in:
39
src/Vect.cpp
39
src/Vect.cpp
@@ -5,6 +5,15 @@
|
||||
#include <cassert>
|
||||
#include <iostream>
|
||||
|
||||
static bool IsColumnNull(Matrix& mat, std::size_t column) {
|
||||
for (std::size_t i = 0; i < mat.GetRawCount(); i++) {
|
||||
if (!IsEqualZero(mat.at(i, column))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Vect::Vect(const Matrix& mat) : m_Data(mat) {
|
||||
Simplify();
|
||||
}
|
||||
@@ -12,12 +21,7 @@ Vect::Vect(const Matrix& mat) : m_Data(mat) {
|
||||
void Vect::Simplify() {
|
||||
Matrix mat = m_Data;
|
||||
for (std::size_t j = 0; j < mat.GetColumnCount(); j++) {
|
||||
std::size_t i;
|
||||
for (i = 0; i < mat.GetRawCount(); i++) {
|
||||
if (!IsEqualZero(mat.at(i, j)))
|
||||
break;
|
||||
}
|
||||
if (i == mat.GetRawCount()) {
|
||||
if (IsColumnNull(mat, j)) {
|
||||
m_Data = mat.SubMatrix(0, 0, mat.GetRawCount(), j);
|
||||
return;
|
||||
}
|
||||
@@ -25,6 +29,10 @@ void Vect::Simplify() {
|
||||
m_Data = mat;
|
||||
}
|
||||
|
||||
Matrix Vect::GetVector(std::size_t index) const {
|
||||
return m_Data.SubMatrix(0, index, m_Data.GetRawCount(), 1);
|
||||
}
|
||||
|
||||
std::size_t Vect::GetCardinal() const {
|
||||
return m_Data.GetColumnCount();
|
||||
}
|
||||
@@ -65,26 +73,9 @@ Matrix Vect::GetLinearSystem() const {
|
||||
return vect;
|
||||
}
|
||||
|
||||
void Vect::Print() const {
|
||||
std::cout << "Espace vectoriel de dimension " << GetCardinal() << " de base :\n\n";
|
||||
for (std::size_t i = 0; i < m_Data.GetRawCount(); i++) {
|
||||
for (std::size_t j = 0; j < m_Data.GetColumnCount(); j++) {
|
||||
std::cout << "[ " << m_Data.at(i, j) << " ]\t";
|
||||
}
|
||||
std::cout << "\n";
|
||||
}
|
||||
}
|
||||
|
||||
std::size_t Vect::GetDimension() const {
|
||||
return m_Data.GetRawCount();
|
||||
}
|
||||
|
||||
VectAffine::VectAffine(const Vect& base, const Matrix& origine) :
|
||||
m_Base(base), m_Origin(origine.SubMatrix(0, 0, m_Base.GetDimension(), 1)) {}
|
||||
|
||||
void VectAffine::Print() const {
|
||||
std::cout << "\tEspace Affine :\n\n";
|
||||
m_Base.Print();
|
||||
std::cout << "\nOrigine :\n\n";
|
||||
m_Origin.Print();
|
||||
}
|
||||
m_Base(base), m_Origin(origine.SubMatrix(0, 0, m_Base.GetDimension(), 1)) {}
|
||||
Reference in New Issue
Block a user