From 5c36d0a5946b41e5372f8a12d4cd6945643d7d1b Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 14 Jan 2019 15:51:47 +0000 Subject: [PATCH] wip break out edge_id_to_other_id --- parse-input-graph | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/parse-input-graph b/parse-input-graph index 69dc87e..e65df41 100755 --- a/parse-input-graph +++ b/parse-input-graph @@ -146,6 +146,20 @@ sub adjacencies () { print STDERR "total $ndikes dikes\n"; } +sub edge_id_to_other_id ($$) { + my ($ra, $adjia) = @_; + my $adjsa = $region{$ra}{Adj}; + my $adja = $adjsa->[$adjia]; + my $rb = $adja->{Name}; + my $adjsb = $region{$rb}{Adj}; + foreach my $adjib (0..$#$adjsb) { + my $adjb = $adjsb->[$adjib]; + next unless $adjb->{Name} eq $ra; + return ($rb, $adjib); + } + confess "$ra $adjia ?"; +} + sub dual () { # We want to turn the graph from a graph on the regions, to # one where the nodes are the vertices of region boundaries. @@ -165,27 +179,23 @@ sub dual () { foreach my $ra (sort keys %region) { my $adjsa = $region{$ra}{Adj}; foreach my $adjia (0..$#$adjsa) { + my ($rb, $adjib) = edge_id_to_other_id($ra, $adjia); my $adja = $adjsa->[$adjia]; my $va = "$ra # $adjia"; # $va is the vertex at the anticlockwise end # of edge no.$adjia of region $ra - my $rb = $adja->{Name}; next if ($rb eq 'L' or $rb eq 'NZ') and ($ra eq 'L' or $ra eq 'NZ'); # $rb is the region on the other side of that edge my $adjsb = $region{$rb}{Adj}; - foreach my $adjib (0..$#$adjsb) { - my $adjb = $adjsb->[$adjib]; - next unless $adjb->{Name} eq $ra; - # $adjb is the same edge seen from the other side - my $adjibc = ($adjib + 1) % @$adjsb; - my $vb = "$rb # $adjibc"; - # $vb is the vertex at the *clockwise* end - # of that same edge, which is edge no $adjib of region $rb - print STDERR "vertex $va = $vb\n"; - $g->add_edge($va,$vb); - last; - } + # $adjb is the same edge seen from the other side + my $adjibc = ($adjib + 1) % @$adjsb; + my $vb = "$rb # $adjibc"; + # $vb is the vertex at the *clockwise* end + # of that same edge, which is edge no $adjib of region $rb + print STDERR "vertex $va = $vb\n"; + $g->add_edge($va,$vb); + last; } } my %edgeid2vi; -- 2.30.2