diff options
Diffstat (limited to 'lib/src/graph.cpp')
-rw-r--r-- | lib/src/graph.cpp | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/lib/src/graph.cpp b/lib/src/graph.cpp index c75d466..1c770e9 100644 --- a/lib/src/graph.cpp +++ b/lib/src/graph.cpp @@ -445,14 +445,14 @@ void graph::helper(unsigned nv, std::mt19937& rng) { jcv_diagram_free(&diagram); } -graph::coordinate reverse(const graph::coordinate& x) { return {x.y, x.x}; } +coordinate reverse(const coordinate& x) { return {x.y, x.x}; } graph const graph::rotate() { graph g2(*this); for (graph::vertex& v : g2.vertices) { v.r = reverse(v.r); - for (graph::coordinate& r : v.polygon) { + for (coordinate& r : v.polygon) { r = reverse(r); } } @@ -464,7 +464,7 @@ graph const graph::rotate() { for (graph::vertex& v : g2.dual_vertices) { v.r = reverse(v.r); - for (graph::coordinate& r : v.polygon) { + for (coordinate& r : v.polygon) { r = reverse(r); } } @@ -490,7 +490,7 @@ std::string graph::write() const { output += "},\"vp\"->{"; for (const graph::vertex &v : vertices) { output += "{"; - for (const graph::coordinate &r : v.polygon) { + for (const coordinate &r : v.polygon) { output += "{" + std::to_string(r.x) + "," + std::to_string(r.y) + "},"; } output.pop_back(); @@ -505,7 +505,7 @@ std::string graph::write() const { output += "},\"up\"->{"; for (const graph::vertex &v : dual_vertices) { output += "{"; - for (const graph::coordinate &r : v.polygon) { + for (const coordinate &r : v.polygon) { output += "{" + std::to_string(r.x) + "," + std::to_string(r.y) + "},"; } output.pop_back(); @@ -536,3 +536,23 @@ std::string graph::write() const { return output; } + +coordinate graph::Δr(unsigned e) const { + coordinate tmp = dual_vertices[dual_edges[e].v[1]].r - dual_vertices[dual_edges[e].v[0]].r; + if (dual_edges[e].crossings[0]) { + if (tmp.x > 0) { + tmp.x -= L.x; + } else { + tmp.x += L.x; + } + } + if (dual_edges[e].crossings[1]) { + if (tmp.y > 0) { + tmp.y -= L.y; + } else { + tmp.y += L.y; + } + } + + return tmp; +} |