From d2fdfc02ea8ab2c83b53cfd2e588c3d38a3e10cc Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Fri, 23 Jul 2021 14:08:43 +0200 Subject: [PATCH] arb:: compute_vertex_valence function --- arbitrile.cpp | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/arbitrile.cpp b/arbitrile.cpp index 545c7093..618caa60 100644 --- a/arbitrile.cpp +++ b/arbitrile.cpp @@ -42,6 +42,8 @@ struct shape { vector > sublines; vector> stretch_shear; int repeat_value; + int cycle_length; + vector vertex_valence; }; struct slider { @@ -269,6 +271,51 @@ EX void unmirror() { } } +EX void compute_vertex_valence() { + auto& shs = arb::current.shapes; + + for(int i=0; i 360*degree + 1e-6) throw hr_parse_exception("improper total in compute_stats"); + if(at.sid != i) throw hr_parse_exception("ended at wrong type determining vertex_valence"); + if((at.eid - k) % shs[i].cycle_length) throw hr_parse_exception("ended at wrong edge determining vertex_valence"); + shs[i].vertex_valence[k] = qty; + } + if(debugflags & DF_GEOM) + println(hlog, "computed vertex_valence of ", i, " as ", shs[i].vertex_valence); + } + } + EX void load(const string& fname, bool after_sliding IS(false)) { fhstream f(fname, "rt"); if(!f.f) throw hr_parse_exception("file " + fname + " does not exist"); @@ -515,7 +562,12 @@ EX void load(const string& fname, bool after_sliding IS(false)) { } } } - if(do_unmirror) unmirror(); + + if(do_unmirror) { + unmirror(); + compute_vertex_valence(); + } + if(!after_sliding) slided = current; }