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 :
$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;
$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);
}