# _moveterm(wtab, noon, width, height) - update illuminated portion of the globe. sub _moveterm { my ($wtab, $noon, $width, $height) = @_; my $illumMap = Imager->new(ysize => $height, xsize => $width); $illumMap = $illumMap->convert(preset => 'addalpha'); my $day = Imager::Color->new(255, 255, 255, 10); my ($i, $j, $oh, $nl, $nh); for ($i = 0; $i < $height; $i++) { if ($wtab->[$i] >= 0) { $nl = (($noon - ($wtab->[$i] / 2)) + $width) % $width; $nh = ($nl + $wtab->[$i]) - 1; $oh = ($nh - $nl) + 1; if (($nl + $oh) > $width) { for ($j = $nl; $j < $width; $j++) { $illumMap->setpixel(x => $j, y => $i, color => $day); } for ($j = 0; $j < ((($nl + $oh) - $width) + 1); $j++) { $illumMap->setpixel(x => $j, y => $i, color => $day); } } else { for ($j = $nl; $j < (($nl + $oh) + 1); $j++) { $illumMap->setpixel(x => $j, y => $i, color => $day); } } } } return $illumMap; }