my $dx = $token_sz * 1.25;
my $linecolour = darkerpscolour('cube', 0.25);
my @pos;
- for my $i (-1..$#$track) {
- $pos[$i+1] = mkvec(0, ($i - 0.5 * @$track) * $dy);
+ for my $i (0..$#$track) {
+ $pos[$i] = mkvec(0, ($i - 0.5 * @$track) * $dy);
}
- my $pos_ = shift @pos;
my $prepline = "$linecolour $hs_lw setlinewidth newpath";
o(" $prepline\n");
o(" ",psvec($pos[0])," moveto ",psvec($pos[-1])," lineto stroke\n");
pscolour($c{Colours}{cube}),
$linecolour);
}
- for my $i (-1..$#pos-1) {
- my $differs = $i >=0 && $track->[$i] != $track->[$i+1];
+ my $last = 0;
+ for my $i (0..$#pos) {
+ my $differs = $track->[$i] != $last;
+ $last = $track->[$i];
o(" $prepline\n");
o(" gsave ",
- psvec(($i >=0 ? $pos[$i] : $pos_) + mkvec(-0.0 * $token_sz, $dy/2))," translate\n");
+ psvec($pos[$i] + mkvec(-0.0 * $token_sz, $dy/2))," translate\n");
if ($i >= 0 &&
($i == 0 ||
$track->[$i] != $track->[$i-1])) {
o(" grestore\n");
}
if ($differs || $i==-1) {
- if ($differs) {
- o(" 0 0 moveto",
+ if ($i > 0) {
+ o(" 0 -$dy moveto",
" ",psvec(mkvec( $dx + $cube_sz, 0 )),
" rlineto stroke\n");
}
o(" ",($token_sz * 0.6 + $cube_gap)," ",
- ($dy * 0.5 - 0.5 * (water_cubes_sz(2))),
+ (-$dy * 0.5 - 0.5 * (water_cubes_sz(2))),
" translate\n");
my $bottom = int(($track->[$i+1] + 1) / 2);
water_cubes($bottom);