From: Ian Jackson Date: Sun, 28 Nov 2010 17:26:02 +0000 (+0000) Subject: layout/layout: join arcline gets sense of tracks right when swap=-1 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=883f37c6f9c0a1302ab13a2a8114b116b8b938b0;p=trains.git layout/layout: join arcline gets sense of tracks right when swap=-1 --- diff --git a/layout/layout b/layout/layout index aeec202..616e16f 100755 --- a/layout/layout +++ b/layout/layout @@ -1220,11 +1220,18 @@ sub joins_arcline ($$$$) { o("ok\n"); $j->{A}= $ap->{A}; $c->{A}= 0; - $path= [{ T => Line, A => $ap, B => $j, L => $aja }, - { T => Arc, F => $j, C => $c, R => $rj, - D => -signum($rj) * a_normalise - (-signum($rj) * ($bp->{A} + $pi - $j->{A}), 0) }]; - $path= [ reverse @$path ] if $swap<0; + my $angle= -signum($rj) * + a_normalise(-signum($rj) * ($bp->{A} + $pi - $j->{A}), 0); + if ($swap > 0) { + $path= [{ T => Line, A => $ap, B => $j, L => $aja }, + { T => Arc, F => $j, C => $c, R => $rj, + D => $angle }]; + } else { + $path= [{ T => Arc, F => $from, C => $c, R => -$rj, + D => -$angle }, + { T => Line, A => { %$j, A => $to->{A} }, + B => $to, L => $aja }]; + } push @$results, { Path => $path, SolKinds => [ 'arcline' ] }; } }