- if ($draw =~ m/E/ && @seggraphend==2) {
- $diff= v_len(v_subtract($pt, $seggraphend[0])) -
- v_len(v_subtract($pt, $seggraphend[1]));
- if (abs($diff) < $psu_ulen*3) {
- $segments[0] =~ m/^(\-?)(\w+)/;
- $seglabel{$2}{X}= $pt->{X};
- $seglabel{$2}{Y}= $pt->{Y};
- $seglabel{$2}{A}= $pt->{A};
- $seglabel{$2}{A} += $pi if length($1);
+ if ($draw =~ m/E/ && $seggraphaim) {
+ $segments[0] =~ m/^(\-?)(\w+)/ or die;
+ ($segvbaren,$segvbare)=($1,$2);
+ $dist2= v_distsquared($pt, $seggraphaim);
+ $best= $seggraphbest{$segvbare};
+ if (!$best or $dist2 < $best->{D2}) {
+ $best= { X => $pt->{X},
+ Y => $pt->{Y},
+ A => $pt->{A},
+ D2 => $dist2 };
+ $best->{A} += $pi if length($segvbaren);
+ $seggraphbest{$segvbare}= $best;