chiark / gitweb /
planar some of the time
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 14 Jan 2019 17:22:18 +0000 (17:22 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 14 Jan 2019 17:22:18 +0000 (17:22 +0000)
parse-input-graph

index 16d936090422c59d6e43ea0b181ff5c97f3e2eec..6ca6d0be828dc99bd9a0ad9c44d049998fd6fbab 100755 (executable)
@@ -234,6 +234,10 @@ sub dual () {
       $eid =~ m/ # (\d+)$/ or confess;
       my ($ra, $adjia) = ($`, $1);
       my $adjsa = $region{$ra}{Adj};
+
+      my $ro = $adjsa->[$adjia]{Name};
+      my $is_spec = (($ra eq 'L' or $ra eq 'NZ') or
+                    ($ro eq 'L' or $ro eq 'NZ'));
       my $adjib = ($adjia + 1) % @$adjsa;
       my $vib = $edgeid2vi{"$ra # $adjib"};
       print STDERR "VIA=$via | $ra # $adjia | # $adjib VIB=$vib\n";
@@ -243,6 +247,7 @@ sub dual () {
       my $einfo = {
         VIB => $vib,
         EdgeId => $eid,
+        Spec => $is_spec,
       };
       push @{ $vertexa->{Edges} }, $einfo;
     }
@@ -254,7 +259,8 @@ sub o { print @_ or die $!; }
 sub output_dot () {
   o <<END;
 strict graph "map" {
-  layout="sfdp";
+  layout="neato";
+  start=2;
 //  nodesep=20;
 //  mindist=20;
 //  maxiter=1000000000000000;
@@ -268,16 +274,18 @@ strict graph "map" {
 END
   foreach my $via (0..$#vertex) {
     my $vertexa = $vertex[$via];
-    o("$via [label=\"".$vertexa->{Text}."\"];");
+    o("$via [label=\"".$vertexa->{Text}."\"];\n");
     foreach my $ei (@{ $vertexa->{Edges} }) {
       my $vib = $ei->{VIB};
       #if ($r1 eq 'NZ' || $r1 eq 'L') {
       #  $r1n = "_$r1 $r0";
       #  next;
       #}
-      o "\"$via\" -- \"$vib\" [\n";
-      o "  fontsize=8; label=\"".
+      next if $ei->{Spec};
+      o "\"$via\" -- \"$vib\" [";
+      o "fontsize=8; label=\"".
          $ei->{EdgeId}."\";";
+      o " weight=0;w=0;len=3;" if $ei->{Spec};
       o "];\n";
     }
   }