aboutsummaryrefslogtreecommitdiff
path: root/src/dot.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/dot.rs')
-rw-r--r--src/dot.rs121
1 files changed, 0 insertions, 121 deletions
diff --git a/src/dot.rs b/src/dot.rs
deleted file mode 100644
index 97f4ab1..0000000
--- a/src/dot.rs
+++ /dev/null
@@ -1,121 +0,0 @@
-use crate::*;
-
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
-pub struct DcelDotOptions {
- pub twin: bool,
- pub next: bool,
- pub prev: bool,
-}
-
-impl DcelDotOptions {
- pub fn none() -> Self {
- Self {
- twin: false,
- next: false,
- prev: false,
- }
- }
-
- pub fn all() -> Self {
- Self {
- twin: true,
- next: true,
- prev: true,
- }
- }
-}
-
-pub fn dcel_write_dot<V>(
- dcel: &Dcel<V>,
- pos: impl Fn(&V) -> [f64; 2],
- name: impl Fn(&V, &mut Formatter) -> fmt::Result,
- f: &mut Formatter,
- opt: DcelDotOptions,
-) -> fmt::Result {
- writeln!(f, "digraph DCEL {{")?;
- writeln!(f, "node [shape = circle]")?;
- //writeln!(f, "nodesep = 1")?;
-
- for shell in dcel.iter_bodies().flat_map(Lens::iter_shells) {
- for vertex in shell.iter_vertices() {
- let p = pos(vertex.data());
-
- writeln!(
- f,
- "vertex_{} [label=\"{}\", pos=\"{},{}!\"]",
- vertex.id(),
- DisplayFn(|f| name(vertex.data(), f)),
- p[0],
- p[1]
- )?;
- }
-
- for hedges in shell
- .iter_edges()
- .map(|x| x.half_edges())
- .flat_map(|[he1, he2]| [[he1, he2], [he2, he1]])
- {
- let ids = hedges.map(Lens::id);
- let vertices = hedges.map(|h| h.origin());
- let points = vertices.map(|v| pos(v.data()));
-
- let mut diff = [points[1][1] - points[0][1], points[1][0] - points[0][0]];
-
- // let len = (diff[0] * diff[0] + diff[1] * diff[1]).sqrt();
- diff[0] *= -0.075;
- diff[1] *= 0.075;
-
- let mid = [
- (points[1][0] + points[0][0]) / 2.0 + diff[0],
- (points[1][1] + points[0][1]) / 2.0 + diff[1],
- ];
-
- writeln!(
- f,
- "half_edge_{} [pos=\"{},{}!\", shape=point, width=0.01, height=0.01]",
- ids[0], mid[0], mid[1]
- )?;
- writeln!(
- f,
- "vertex_{} -> half_edge_{} [arrowhead=none]",
- vertices[0].id(),
- ids[0]
- )?;
- writeln!(
- f,
- "half_edge_{} -> vertex_{} [label=\"{}\"]",
- ids[0],
- vertices[1].id(),
- ids[0]
- )?;
-
- if opt.twin {
- writeln!(
- f,
- "half_edge_{} -> half_edge_{} [color=\"red\"]",
- ids[0], ids[1]
- )?;
- }
-
- if opt.next {
- writeln!(
- f,
- "half_edge_{} -> half_edge_{} [color=\"green\"]",
- ids[0],
- hedges[0].next().id(),
- )?;
- }
-
- if opt.prev {
- writeln!(
- f,
- "half_edge_{} -> half_edge_{} [color=\"blue\"]",
- ids[0],
- hedges[0].prev().id(),
- )?;
- }
- }
- }
-
- writeln!(f, "}}")
-}