From: ian Date: Sun, 20 Mar 2005 01:41:51 +0000 (+0000) Subject: get node side sense right X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=f890b15225132d20b10c03972996eae9a9a177fb;p=trains.git get node side sense right --- diff --git a/layout/extractgraph b/layout/extractgraph index c29b0b0..7d7ff42 100755 --- a/layout/extractgraph +++ b/layout/extractgraph @@ -86,7 +86,8 @@ sub sqr ($) { return $_[0]*$_[0]; } sub find_node (@) { my ($lni,$isdest,$l,$x,$y,$a) = @_; my ($any_outside_toler, $any_outside_clear, $updlayer); - my ($ni, $node, %diff, $back, $d, $k); + my ($ni, $node, %diff, $back, $d, $k, $pinfo); + $pinfo= sprintf "%.2f %.2f %.2f", $x,$y,$a; $a -= 360.0 * floor($a / 360.0); for $node (@nodes) { $diff{Layer}= (($d = $l - $node->{LayerMin}) < 0 ? $d : @@ -97,9 +98,9 @@ sub find_node (@) { $diff{Angle}= $a - $node->{A}; # <-360,360> if ($diff{Angle} < 0) { $diff{Angle} += 360; } # [0,360> $back= $diff{Angle} >= 90 && $diff{Angle} < 270; # $back <=> [90,270> + if ($back) { $diff{Angle} -= 180; } # [0,90> or [270,360> $back= !!$isdest != !!$back; # logical xor $back += 0; - if ($back) { $diff{Angle} -= 180; } # [0,90> or [270,360> if ($diff{Angle} > 180) { $diff{Angle} -= 360; } # [-90,90> $any_outside_clear= 0; $any_outside_toler= 0; @@ -126,15 +127,15 @@ sub find_node (@) { $node->{"Layer$updlayer"}= $l; $node->{LineInfo}.="($l<-$lni)"; } - comment("nodulated $lni ex.$node/$back ($x $y $a)"); + comment("nodulated $lni ex.$node/$back ($pinfo)"); return ($node,$back); } } $node= { X => $x, Y => $y, A => $a, LayerMin => $l, LayerMax => $l, LineInfo => $lni }; - $back= 0; + $back= $isdest; push @nodes, $node; - comment("nodulated $lni new$node/$back ($x $y $a)"); + comment("nodulated $lni new$node/$back ($pinfo)"); return ($node,$back); }