From e6d078500974928d5981b32f7b8bfb3b76da7cbf Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Tue, 14 May 2024 22:36:57 +0200 Subject: [PATCH] show jordaned matrix --- src/gui/PivotGui.cpp | 58 ++++++++++++++++++++++++++++---------------- 1 file changed, 37 insertions(+), 21 deletions(-) diff --git a/src/gui/PivotGui.cpp b/src/gui/PivotGui.cpp index f4636fa..b29f24a 100644 --- a/src/gui/PivotGui.cpp +++ b/src/gui/PivotGui.cpp @@ -1,5 +1,6 @@ #include "PivotGui.h" +#include "Gauss.h" #include "Matrix.h" #include "Solver.h" #include @@ -55,9 +56,8 @@ void PivotGui::Render() { static bool refresh = true; // divisions des fenetres - ImVec2 topLeftWindowSize(io.DisplaySize.x * 0.5f, io.DisplaySize.y * 0.8f); - ImVec2 topRightWindowSize(io.DisplaySize.x * 0.5f, io.DisplaySize.y * 0.8f); - ImVec2 bottomWindowSize(io.DisplaySize.x, io.DisplaySize.y * 0.2f); + ImVec2 topLeftWindowSize(io.DisplaySize.x * 0.5f, io.DisplaySize.y); + ImVec2 topRightWindowSize(io.DisplaySize.x * 0.5f, io.DisplaySize.y); // Begin fenetre top left ImGui::SetNextWindowSize(topLeftWindowSize); @@ -85,7 +85,7 @@ void PivotGui::Render() { ImGui::NewLine(); - ImGui::BeginChild("MatriceInitiale", ImVec2(topLeftWindowSize.x, io.DisplaySize.y * 0.7f), false); + // ImGui::BeginChild("MatriceInitiale", ImVec2(topLeftWindowSize.x, io.DisplaySize.y * 0.7f), false); // Resize matrixValues and initialize new elements to 0 @@ -101,7 +101,7 @@ void PivotGui::Render() { if (x > 0) ImGui::SameLine(); ImGui::PushID(y * matrixSizeX + x); - ImGui::PushItemWidth(30); // Adjust this value to change the cell size + ImGui::PushItemWidth(60); // Adjust this value to change the cell size if (ImGui::InputInt("", &matrixValues[y][x], 0, 0, ImGuiInputTextFlags_CharsDecimal)) refresh = true; ImGui::PopItemWidth(); @@ -109,12 +109,30 @@ void PivotGui::Render() { } } - // Display the equationsResult strings in the GUI if they are not empty - if (!equationsResultImage.empty()) { - ImGui::TextWrapped(equationsResultImage.c_str()); - } + // ImGui::EndChild(); // End Matrice initiale - ImGui::EndChild(); // End Matrice initiale + ImGui::NewLine(); + + ImGui::Text("Matrice échelonnée:"); + + // Convert the "result" string back to a matrix + Matrix resultMatrix = LoadMatrixFromStdVect(matrixValues); + + // Apply the Gauss-Jordan elimination to the matrix + Gauss::GaussJordan(resultMatrix, true, true); // Assuming you want to reduce and normalize the matrix + + // Display the matrix + for (std::size_t i = 0; i < resultMatrix.GetRawCount(); i++) { + for (std::size_t j = 0; j < resultMatrix.GetColumnCount(); j++) { + ImGui::PushID(i * resultMatrix.GetColumnCount() + j); + if (ImGui::Button(ElementToString(resultMatrix.at(i, j)).c_str(), ImVec2(70, 70))) { // Adjust the size as needed + // Handle button click here if needed + } + ImGui::PopID(); + if (j < resultMatrix.GetColumnCount() - 1) + ImGui::SameLine(); + } + } ImGui::End(); // End fenetre top left @@ -128,16 +146,6 @@ void PivotGui::Render() { static std::string result = ""; - ImGui::TextWrapped(result.c_str()); - - ImGui::End(); // End fenetre top right - - // Begin fenetre bas - ImGui::SetNextWindowSize(bottomWindowSize); - ImGui::SetNextWindowPos(ImVec2(0, io.DisplaySize.y * 0.8f)); // Position at the bottom-left corner - ImGui::Begin("Bottom Part", nullptr, - ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoScrollbar); - if (refresh) { // Calculate the kernel and image @@ -160,7 +168,15 @@ void PivotGui::Render() { } refresh = false; - ImGui::End(); // End fenetre bas + + // Display the equationsResult strings in the GUI if they are not empty + if (!equationsResultImage.empty()) { + ImGui::TextWrapped("%s", equationsResultImage.c_str()); + } + + ImGui::TextWrapped("%s", result.c_str()); + + ImGui::End(); // End fenetre top right } void PivotGui::Destroy() {} \ No newline at end of file