From: Ian Jackson Date: Sat, 2 Mar 2019 14:41:31 +0000 (+0000) Subject: use edge centroid X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=491ddd57c35fa1276eb9c86d53fb88ae0dbb4881;p=pandemic-rising-tide.git use edge centroid --- 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); } }