chiark / gitweb /
get node side sense right
authorian <ian>
Sun, 20 Mar 2005 01:41:51 +0000 (01:41 +0000)
committerian <ian>
Sun, 20 Mar 2005 01:41:51 +0000 (01:41 +0000)
layout/extractgraph

index c29b0b0fd0d035f5bb9c6a0b326bd48c9f8a31a3..7d7ff42ccba5d97451c9d91c6bef980b492eee15 100755 (executable)
@@ -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);
 }