From 1acff9426bc54278fdb91f2baf4aa9160cc9d136 Mon Sep 17 00:00:00 2001 From: allem Date: Tue, 28 Jan 2020 21:34:58 -0500 Subject: [PATCH] soft-remove "dim" from Mesh --- vis/include/geometry.hpp | 52 +++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/vis/include/geometry.hpp b/vis/include/geometry.hpp index 6a453ad..385124c 100644 --- a/vis/include/geometry.hpp +++ b/vis/include/geometry.hpp @@ -26,19 +26,15 @@ size_t num_gens_from_key(size_t key) { return count; } -struct Simplexes { - int dim; +struct Mesh { +// int dim; std::vector vals; - Simplexes() : dim(0), vals() {} + Mesh() : vals() {} - explicit Simplexes(int dim) : dim(dim), vals() {} - - Simplexes(int dim, std::vector &vals) : dim(dim), vals(vals) {} - - explicit Simplexes(const std::vector &parts) { - dim = parts[0].dim; + explicit Mesh(std::vector &vals) : vals(vals) {} + explicit Mesh(const std::vector &parts) { size_t count = 0; for (const auto &part : parts) { count += part.size(); @@ -55,17 +51,17 @@ struct Simplexes { } void flip() { - if (dim == 0) - return; - for (int i = 0; i < vals.size(); i += dim + 1) { - std::swap(vals[i], vals[i + 1]); - } +// if (dim == 0) +// return; +// for (int i = 0; i < vals.size(); i += dim + 1) { +// std::swap(vals[i], vals[i + 1]); +// } } }; struct GeomGen { std::vector>> coset_memo; - std::vector> triangulate_memo; + std::vector> triangulate_memo; tc::Group &context; explicit GeomGen(tc::Group &g) : context(g) { @@ -148,7 +144,7 @@ struct GeomGen { return solve_sg(sg_gens); } - Simplexes recontext(std::vector &g_gens, std::vector &sg_gens, const Simplexes &items) { + Mesh recontext(std::vector &g_gens, std::vector &sg_gens, const Mesh &items) { auto s_sg_gens = prepare_gens(g_gens, sg_gens); auto table = solve_g(g_gens); auto path = solve_g(sg_gens).path; @@ -157,7 +153,7 @@ struct GeomGen { auto map = path.walk(0, s_sg_gens, coset_map); - Simplexes ret(items.dim); + Mesh ret; ret.vals.reserve(items.size()); for (const auto val : items.vals) { ret.vals.push_back(map[val]); @@ -167,13 +163,13 @@ struct GeomGen { return ret; } - Simplexes tile(std::vector &g_gens, std::vector &sg_gens, const Simplexes &items) { - Simplexes base = recontext(g_gens, sg_gens, items); + Mesh tile(std::vector &g_gens, std::vector &sg_gens, const Mesh &items) { + Mesh base = recontext(g_gens, sg_gens, items); auto s_sg_gens = prepare_gens(g_gens, sg_gens); auto table = solve_g(g_gens); auto path = _solve(g_gens, sg_gens).path; - auto simplex_map = [table](Simplexes from, int gen) -> Simplexes { + auto simplex_map = [table](Mesh from, int gen) -> Mesh { for (auto &coset : from.vals) { coset = table.get(coset, gen); } @@ -181,15 +177,15 @@ struct GeomGen { return from; }; - auto r = path.walk(base, group_gens(), simplex_map); + auto r = path.walk(base, group_gens(), simplex_map); - return Simplexes(r); + return Mesh(r); } - Simplexes triangulate(std::vector &g_gens); + Mesh triangulate(std::vector &g_gens); - Simplexes _triangulate(std::vector &g_gens) { - Simplexes S(g_gens.size()); + Mesh _triangulate(std::vector &g_gens) { + Mesh S; if (g_gens.empty()) { S.vals.push_back(0); return S; @@ -198,8 +194,8 @@ struct GeomGen { auto sub_simps = triangulate(sg_gens); int start = sub_simps.size(); sub_simps = tile(g_gens, sg_gens, sub_simps); - for (int l = start; l < sub_simps.size(); l += S.dim) { - for (int m = l; m < l + S.dim; m++) { + for (int l = start; l < sub_simps.size(); l += g_gens.size()) { + for (int m = l; m < l + g_gens.size(); m++) { S.vals.push_back(sub_simps.vals[m]); } S.vals.push_back(0); @@ -210,7 +206,7 @@ struct GeomGen { }; -Simplexes GeomGen::triangulate(std::vector &g_gens) { +Mesh GeomGen::triangulate(std::vector &g_gens) { int key = get_key_from_gens(g_gens); if (!triangulate_memo[key]) { triangulate_memo[key] = _triangulate(g_gens);