Add print image

This commit is contained in:
2025-10-22 18:47:05 +02:00
parent 593b813988
commit 59fd47e684
3 changed files with 44 additions and 6 deletions

View File

@@ -2,7 +2,6 @@
#include <cmath> #include <cmath>
#include <algorithm> #include <algorithm>
#include <numeric> #include <numeric>
#include <raylib.h>
namespace Similarity namespace Similarity
{ {
@@ -12,14 +11,15 @@ namespace Similarity
uint8_t *a = (uint8_t *)d1; uint8_t *a = (uint8_t *)d1;
uint8_t *b = (uint8_t *)d2; uint8_t *b = (uint8_t *)d2;
float sum = 0.0f; float sum = 0.0f;
for (size_t i = 0; i < sizeof(Dna); ++i) { for (size_t i = 0; i < sizeof(Dna); ++i)
{
float diff = static_cast<float>(a[i]) - static_cast<float>(b[i]); float diff = static_cast<float>(a[i]) - static_cast<float>(b[i]);
sum += diff * diff; sum += diff * diff;
} }
float distance = std::sqrt(sum); float distance = std::sqrt(sum);
float max_distance = 255.0f * std::sqrt(static_cast<float>(sizeof(Dna))); float max_distance = 255.0f * std::sqrt(static_cast<float>(sizeof(Dna)));
return distance / max_distance; return 1 - (distance / max_distance);
} }
// todo: use int8_t insted of uint8_t and map data // todo: use int8_t insted of uint8_t and map data
@@ -148,7 +148,7 @@ namespace Similarity
}); });
} }
} }
return 1 - (dp[len][len] / float (len + len)); return 1 - (dp[len][len] / float(len + len));
} }
} }

View File

@@ -52,4 +52,5 @@ private:
std::vector<std::array<float, numberOfFunc>> similTable; std::vector<std::array<float, numberOfFunc>> similTable;
void setUpTable(); void setUpTable();
void drawToFile();
}; };

View File

@@ -6,6 +6,7 @@
#include <rlImGui.h> #include <rlImGui.h>
#include <imgui.h> #include <imgui.h>
#include <raylib.h> #include <raylib.h>
#include <fstream>
const char select_user_id[] = "SELECT USER_ID FROM user_table GROUP BY USER_ID;"; const char select_user_id[] = "SELECT USER_ID FROM user_table GROUP BY USER_ID;";
@@ -136,6 +137,10 @@ void Vapp::draw()
{ {
setUpTable(); setUpTable();
} }
if (ImGui::MenuItem("DrawToFile", nullptr, false, enableAll))
{
drawToFile();
}
ImGui::EndMainMenuBar(); ImGui::EndMainMenuBar();
} }
@@ -331,7 +336,39 @@ void Vapp::setUpTable()
} }
sql::reset(get_gen_stmt); sql::reset(get_gen_stmt);
int64_t id = ids[selected_id_index];
char buff[50];
sprintf(buff, "%ld.txt", id);
std::ofstream file(buff);
file << "| index | euclidean_distance | cosine_similarity | cosine_similarity_int | hamming_distance | hamming_distance_without_seeds | levenshtein_distance |\n";
file << "| --- | --- | --- | --- | --- | --- | --- |\n";
for (size_t i = 0; i < similTable.size(); i++)
{
file << "|" << i << "|";
for (size_t j = 0; j < similTable[i].size(); j++)
{
file << similTable[i][j] << "|";
}
file << "\n";
}
} }
sql::finalize(get_gen_stmt); sql::finalize(get_gen_stmt);
} }
void Vapp::drawToFile()
{
enableAll = false;
int64_t id = ids[selected_id_index];
char buff[50];
sprintf(buff, "%ld_%d.png", id, selected_gen);
Image image = LoadImageFromTexture(bigTexture.texture);
ExportImage(image, buff);
UnloadImage(image);
enableAll = true;
}