From 491ddd57c35fa1276eb9c86d53fb88ae0dbb4881 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sat, 2 Mar 2019 14:41:31 +0000 Subject: [PATCH] use edge centroid --- generate-board | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/generate-board b/generate-board index 8525735..7c79f96 100755 --- a/generate-board +++ b/generate-board @@ -136,11 +136,15 @@ sub calculate_centres () { # $region{NAME}{Centre} foreach my $rr (values %region) { next if $rr->{Special}; - my $poly = $rr->{Polygon}; my $sum = Math::GSL::Vector->new(2); - $sum += $_->{Pos} foreach @$poly; - $rr->{Centre} = $sum * (1.0 / @$poly); - # xxx use mean edge location (ie weight by edge length) + my $wsum = 0; + foreach my $adj (@{ $rr->{Adj} }) { + my @ends = map { $_->{Pos} } @{ $adj->{Ends} }; + my $w = ($ends[1] - $ends[0])->norm(); + $sum += $w * $_ foreach @ends; + $wsum += $w; + } + $rr->{Centre} = $sum * (0.5 / $wsum); } } -- 2.30.2