summaryrefslogtreecommitdiff
path: root/lib/src
diff options
context:
space:
mode:
Diffstat (limited to 'lib/src')
-rw-r--r--lib/src/graph.cpp39
1 files changed, 37 insertions, 2 deletions
diff --git a/lib/src/graph.cpp b/lib/src/graph.cpp
index 364f339..974d3b3 100644
--- a/lib/src/graph.cpp
+++ b/lib/src/graph.cpp
@@ -157,9 +157,8 @@ graph::graph(unsigned n, double a, std::mt19937& rng) {
this->helper(n, rng);
}
-void graph::helper(unsigned n, std::mt19937& rng) {
+void graph::helper(unsigned nv, std::mt19937& rng) {
std::uniform_real_distribution<double> d(0.0, 1.0);
- unsigned nv = n;
vertices.resize(nv);
// the coordinates of the lattice, from which a delaunay triangulation
@@ -363,3 +362,39 @@ void graph::helper(unsigned n, std::mt19937& rng) {
jcv_diagram_free(&diagram);
}
+graph::coordinate reverse(const graph::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) {
+ r = reverse(r);
+ }
+ }
+
+ for (graph::edge &e : g2.edges) {
+ e.r = reverse(e.r);
+ e.crossings = {e.crossings[1], e.crossings[0]};
+ }
+
+ for (graph::vertex &v : g2.dual_vertices) {
+ v.r = reverse(v.r);
+ for (graph::coordinate &r : v.polygon) {
+ r = reverse(r);
+ }
+ }
+
+ for (graph::edge &e : g2.dual_edges) {
+ e.r = reverse(e.r);
+ e.crossings = {e.crossings[1], e.crossings[0]};
+ }
+
+ g2.L = reverse(g2.L);
+
+ return g2;
+}
+