my $dx = $token_sz * 1.25;
my $linecolour = darkerpscolour('cube', 0.25);
my @pos;
- for my $i (0..$#$track) {
- $pos[$i] = mkvec(0, ($i - 0.5 * @$track) * $dy);
+ for my $i (-1..$#$track) {
+ $pos[$i+1] = 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 (0..$#pos-1) {
- my $differs = $track->[$i] != $track->[$i+1];
+ for my $i (-1..$#pos-1) {
+ my $differs = $i >=0 && $track->[$i] != $track->[$i+1];
o(" $prepline\n");
o(" gsave ",
- psvec($pos[$i] + mkvec(-0.0 * $token_sz, $dy/2))," translate\n");
+ psvec(($i >=0 ? $pos[$i] : $pos_) + mkvec(-0.0 * $token_sz, $dy/2))," translate\n");
if ($i >= 0 &&
($i == 0 ||
$track->[$i] != $track->[$i-1])) {
o(" 12 -22 moveto ($track->[$i]) show");
o(" grestore\n");
}
- if ($differs || $track->[$i]==2 && $track->[$i+2]!=2) {
+ if ($differs || $i==-1) {
if ($differs) {
o(" 0 0 moveto",
" ",psvec(mkvec( $dx + $cube_sz, 0 )),