#!/usr/bin/perl -w
# compile output with latex, then ps2pdf, then
# convert -delay 10 output.pdf output.gif
# and open gif file in a browser, for example.
#----------------------------------------------------------------------
#
use lib $ENV{'HOME'}."/perl/modules";
use aximate;
use Math::Trig;
setparams({"steps" => 80, # number of frames
	   "circular" => 0, # 1: first=last frame
	   "size" => "(100,100)(-100,0)",
	   "scale" => "1",
	   "loop" => 0 # run to end, then backwards
	  });
if ($#ARGV<0) {print("Please provide an argument.\n");exit}
$program = shift(@ARGV);
&printheader;
makemovie(eval("\\&".$program));
&printfooter;
#----------------------------------------------------------------------
# here are some example programs:

#- {{{ manual1:

sub manual1 {

    point({"type" => "ccirc",
	   "coordinates" => [[-100,-50],[30,20]]});
    line({"foot" => [[-100,0]],
	  "head" => [[100,0]]});
    line({"foot" => [[0,-100]],
	  "head" => [[0,100]]});
    
}

#- }}}
#- {{{ manual2:

sub manual2 {

    point({"type" => "ccirc",
	   "coordinates" => [[20,20]],
	   "polar" => [[50,0],[50,360]]});
    
    point({"type" => "ccirc",
	   "color" => "Red",
	   "coordinates" => [[-100,-50],[30,20]],
	   "polar" => [[10,0],[50,1080]]});
    
    line({"foot" => [[-100,0]],
	  "head" => [[100,0]]});
    line({"foot" => [[0,-100]],
	  "head" => [[0,100]]});
}

#- }}}
#- {{{ manual3:

sub manual3 {

    point({"type" => "ccirc",
	   "color" => "Red",
	   "coordinates" => [[20,20],[-50,-50]],
	   "radius" => [[20],[1]]});
    
    point({"type" => "oval",
	   "angle" => [[20],[1000]],
	   "color" => "Blue",
	   "width" => [[10],[40]],
	   "coordinates" => [[-100,-50],[30,20]]});
    
    # line({"foot" => [[-100,0]],
	  # "head" => [[100,0]]});
    # line({"foot" => [[0,-100]],
	  # "head" => [[0,100]]});
}

#- }}}
#- {{{ manual4:

sub manual4 {

    line({"type" => "line",
	  "color" => "Red",
	  "foot" => [[20,20],[-50,-50]],
	  "fpolar" => [[10,30],[60,720]],
	  "head" => [[-120,0],[70,-50]],
	  "hpolar" => [[0,10],[0,80]]});

}

#- }}}
#- {{{ manual5:

sub manual5 {

    arc({"type" => "line",
	 "color" => "Red",
	 "coordinates" => [[0,0]],
	 "phi1" => [[0],[360]],
	 "phi2" => [[0],[720]]
	},{"phi2" => ['sin(2*pi*$t)**2']});

}

#- }}}
#- {{{ manual6:

sub manual6 {

    $p1 = point({"type" => "empty",
		 "coordinates" => [[20,20]],
		 "polar" => [[50,0],[50,360]]});

    line({"type" => "line",
	  "color" => "Red",
	  "foot" => [[-20,30],[50,-50]],
	  "head" => [${$p1}{"coordinates"}]
	});

    line({"type" => "line",
	  "color" => "Green",
	  "foot" => [[20,-30],[-50,50]],
	  "head" => [${$p1}{"coordinates"}]
	});

}

#- }}}
#- {{{ manual7:

sub manual7 {

    $p1 = point({"type" => "empty",
		 "coordinates" => [[20,20]],
		 "polar" => [[50,0],[50,360]]});

    line({"type" => "line",
	  "color" => "Red",
	  "foot" => [[-20,30],[50,-50]],
	  "head" => [${$p1}{"coordinates"}]
	});

    line({"type" => "line",
	  "color" => "Green",
	  "foot" => [[20,-30],[-50,50]],
	  "head" => [${$p1}{"coordinates"}]
	});

}

#- }}}
#- {{{ manual8:

sub manual8 {

    line({"type" => "line",
	  "color" => "Red",
	  "foot" => [[-100,0]],
	  "head" => [[-100,0],[-100,0]],
	  "hpolar" => [[100,-30],[100,0]],
	  "interval" => [0,30],
	  "staythere" => 1
	});
    point({
	  "color" => "Black",
	  "coordinates" => [[0,0],[0,70]],
	  "interval" => [30,100],
	  "bethere" => 1
	});

}

#- }}}
#- {{{ manual9:

sub manual9 {

curve({"function" => [['100*$t','50*sin(pi*$t)'],
         	      ['100*$t','-50*sin(pi*$t)']]},
      {"function" => ['$t','$t**2']});
    # curve({"function" => [['100*$t','100*$t**2'],
	       # ['100*$t**2','100*$t']]},
	# {"function" => ['$t**10','sin($t)']});

}

#- }}}
#- {{{ manual10:

sub manual10 {

    point({"coordinates" => [[-100,-50],[0,100]],
	  "interval" => [0,50]},
	  {"coordinates" => ['$t','(1-$t)**2']});
    point({"coordinates" => [[0,100],[100,-50]],
	  "interval" => [50,100]},
	  {"coordinates" => ['$t','$t**2']});

}

#- }}}
#- {{{ manual11:

sub manual11 {

    point({"coordinates" => [[],[]]},
	  {"coordinates" => ['100*cos(2*pi*$t)','100*sin(2*pi*$t)']});

  # point({"coordinates" => [[0,0]],
        # "polar" => [[100,0],[100,360]],
	 # "color" => "Red"});
}

#- }}}
#- {{{ manual12:

sub manual12 {

    $num = 10;
    $norm = 0;
    $damp = 1.4;
    foreach $i (1..$num) {
	$norm += 1/sqrt($damp**$i);
    }
    $bound1 = 0;
    $bound2 = 0;
    foreach $i (1..$num) {
	$bound2 += 100/$norm/sqrt($damp**$i);
	$bound3 = $bound1 + 100/$norm/sqrt($damp**$i)/2;
	point({"coordinates" => [[0,-50],[0,100/$damp**($i-1)-50]],
	       "interval" => [$bound1,$bound3]},
	      {"coordinates" => ['$t','(1-$t)**2']});
	point({"coordinates" => [[0,100/$damp**($i-1)-50],[0,-50]],
	       "interval" => [$bound3,$bound2]},
	      {"coordinates" => ['$t','$t**2']});
	$bound1 = $bound2;
    }
}

#- }}}
#- {{{ manual13:

sub manual13 {

    $num = 10;
    $norm = 0;
    $damp = 1.4;
    foreach $i (1..$num) {
	$norm += 1/sqrt($damp**$i);
    }
    $xx = -120;
    $nballs = 16;
    $height = 80;
    foreach (1..$nballs) {
	$bound1 = 0;
	$bound2 = 0;
	$bound3 = 0;
	$height += 40/$nballs;
	$xx += 15;
	$i=0;
	while ($bound2 < 100) {
	    $i++;
	    $bound2 += 100/$norm/sqrt($damp**$i)*sqrt($height/100);
	    $bound3 = $bound1 + 100/$norm/sqrt($damp**$i)/2*sqrt($height/100);
	    point({"coordinates" => [[$xx,-50],[$xx,$height/$damp**($i-1)-50]],
		   "interval" => [$bound1,$bound3]},
		  {"coordinates" => ['$t','(1-$t)**2']});
	    point({"coordinates" => [[$xx,$height/$damp**($i-1)-50],[$xx,-50]],
		   "interval" => [$bound3,$bound2],
		   "staythere" => 0},
		  {"coordinates" => ['$t','$t**2']});
	    $bound1 = $bound2;
	}
    }
}

#- }}}
#- {{{ manual14:

sub manual14 {

    polygon({[[]]});

}

#- }}}
#- {{{ manual15:

sub manual15 {

    $p1 = line({"foot" => [[]],
		"head" => [[20,-100],[200,-100]]},
		{"foot" => ['-100+250*$t**2',
				   '40*sin(5*cos(4*pi*$t)*$t)']});
    track("c1",{%{$p1},"curve" => "polygon",
		"color" => "Red",
		"parameter" => "foot"});

    # $p1 = point({"coordinates" => [[]]},
		# {"coordinates" => ['-100+250*$t**2',
				   # '40*sin(5*cos(4*pi*$t)*$t)']});
    # track("c1",{%{$p1},"curve" => "polygon",
		# "color" => "Red",
		# "parameter" => "coordinates"});

}

#- }}}
#- {{{ manual16:

sub manual16 {

    $p1 = line({"foot" => [[]],
		"head" => [[20,-100],[200,-100]]},
		{"foot" => ['-100+250*$t**2',
				   '40*sin(5*cos(4*pi*$t)*$t)']});
    track("c1",{%{$p1},"curve" => "axocurve",
		"color" => "Red",
		"parameter" => "foot"});

}

#- }}}
#- {{{ manual17:

sub manual17 {

    polygon({"points" => [[[-100,-50],[-100,20]],
			  [[0,30]],
			  [[-30,20],[30,-20]],
			  [[50,70],[100,-70]],
			  [[0,-100],[-40,-80]]
		 ],
	    "color" => "Green"});

}

#- }}}
#- {{{ manual18:

sub manual18 {

    axocurve({"points" => [[[-100,-50],[-100,20]],
			   [[0,30]],
			   [[10,20],[30,-20]],
			   [[50,70],[100,-70]]
		  ],
			       "width" => [[1],[4]],
			       "color" => "Green"});

}

#- }}}
#- {{{ axilogo:

sub axilogo {

    point({"type" => "empty",
	   "coordinates" => [[-60,-10]],
	   "textmode" => "c",
	   "text" => "a",
	   "interval" => [0,50],
	   "staythere" => 1,
	   "textsize" => [[2],[5]]});

    point({"type" => "empty",
	   "coordinates" => [[40,-25]],
	   "text" => "i",
	   "textmode" => "lb",
	   "interval" => [30,40],
	   "staythere" => 1,
	   "textsize" => [[2],[5]]});
    point({"type" => "empty",
	   "coordinates" => [[50,-25]],
	   "textmode" => "lb",
	   "text" => "m",
	   "interval" => [40,50],
	   "staythere" => 1,
	   "textsize" => [[2],[5]]});
    point({"type" => "empty",
	   "coordinates" => [[87,-25]],
	   "textmode" => "lb",
	   "text" => "a",
	   "interval" => [50,60],
	   "staythere" => 1,
	   "textsize" => [[2],[5]]});
    point({"type" => "empty",
	   "coordinates" => [[110,-25]],
	   "textmode" => "lb",
	   "text" => "t",
	   "interval" => [60,70],
	   "staythere" => 1,
	   "textsize" => [[2],[5]]});

    point({"type" => "empty",
	   "coordinates" => [[126,-25]],
	   "textmode" => "lb",
	   "text" => "e",
	   "interval" => [70,80],
	   "staythere" => 1,
	   "textsize" => [[2],[5]]});

    &ggh2;

}

#- }}}
#- {{{ axilogo1a:

sub axilogo1a {

    $num = 10;
    $norm = 0;
    $damp = 1.4;
    foreach $i (1..$num) {
	$norm += 1/sqrt($damp**$i);
    }
    $xx = -80;
    $nballs = 7;
    $height = 80;
    @text = ("a","x","i","m","a","t","e");
    $time1 = 70;
    foreach $n (1..$nballs) {
	$bound1 = 0;
	$bound2 = 0;
	$bound3 = 0;
	$height += 40/$nballs;
	$xx += 25;
	$i=0;
	while ($bound2 < $time1) {
	    $i++;
	    $bound2 += $time1/$norm/sqrt($damp**$i)*sqrt($height/$time1);
	    $bound3 = $bound1 + $time1/$norm/sqrt($damp**$i)/2*sqrt($height/$time1);
	    point({"type" => "empty",
		   "coordinates" => [[$xx,-50],[$xx,$height/$damp**($i-1)-50]],
		   "interval" => [$bound1,$bound3],
		  "text" => $text[$n-1],
		   "textpos" => [[10,90]],
		  "textmode" => "lb"},
		  {"coordinates" => ['$t','(1-$t)**2']});
	    point({"type" => "empty",
		   "coordinates" => [[$xx,$height/$damp**($i-1)-50],[$xx,-50]],
		   "interval" => [$bound3,$bound2],
		   "staythere" => 0,
		   "text" => $text[$n-1],
		   "textpos" => [[10,90]],
		  "textmode" => "lb"},
		  {"coordinates" => ['$t','$t**2']});
	    $bound1 = $bound2;
	}
	point({"type" => "empty",
	       "coordinates" => [[$xx,-50]],
	       "interval" => [$time1,100],
	       "staythere" => 0,
	       "text" => $text[$n-1],
	       "textpos" => [[10,90]],
	       "textmode" => "lb"});
    }
}

#- }}}
#- {{{ axilogo1:

sub axilogo1 {

    $num = 10;
    $norm = 0;
    $damp = 1.4;
    foreach $i (1..$num) {
	$norm += 1/sqrt($damp**$i);
    }
    $xx = -80;
    $nballs = 7;
    $height = 80;
    @text = ("a","x","i","m","a","t","e");
    foreach $n (1..$nballs) {
	$bound1 = 0;
	$bound2 = 0;
	$bound3 = 0;
	$height += 40/$nballs;
	$xx += 25;
	$i=0;
	while ($bound2 < 100) {
	    $i++;
	    $bound2 += 100/$norm/sqrt($damp**$i)*sqrt($height/100);
	    $bound3 = $bound1 + 100/$norm/sqrt($damp**$i)/2*sqrt($height/100);
	    point({"type" => "empty",
		   "coordinates" => [[$xx,-50],[$xx,$height/$damp**($i-1)-50]],
		   "interval" => [$bound1,$bound3],
		  "text" => $text[$n-1],
		   "textpos" => [[10,90]],
		  "textmode" => "lb"},
		  {"coordinates" => ['$t','(1-$t)**2']});
	    point({"type" => "empty",
		   "coordinates" => [[$xx,$height/$damp**($i-1)-50],[$xx,-50]],
		   "interval" => [$bound3,$bound2],
		   "staythere" => 0,
		   "text" => $text[$n-1],
		   "textpos" => [[10,90]],
		  "textmode" => "lb"},
		  {"coordinates" => ['$t','$t**2']});
	    $bound1 = $bound2;
	}
    }
}

#- }}}
#- {{{ axilogo2:

sub axilogo2 {
    my($height,$length);
    $num = 10;
    $norm = 0;
    $damp = 1.4;
    foreach $i (1..$num) {
	$norm += 1/sqrt($damp**$i);
    }
    $xx = -80;
    $nballs = 7;
    $height = 80;
    $length = 50;
    @text = ("a","x","i","m","a","t","e");
    foreach $n (1..$nballs) {
	$bound1 = 0;
	$bound2 = 0;
	$bound3 = 0;
	$height += 40/$nballs;
	$xx += 50;
	$i=0;
	while ($bound2 < $length) {
	    $i++;
	    $bound2 += $length/$norm/sqrt($damp**$i)*sqrt($height/$length);
	    $bound3 = $bound1 + $length/$norm/sqrt($damp**$i)/
		2*sqrt($height/$length);
	    point({"type" => "ccirc",
		   "coordinates" => [[$xx,-50],[$xx,$height/$damp**($i-1)-50]],
		   "interval" => [$bound1,$bound3],
		  # "text" => $text[$n-1],
		   "textpos" => [[10,90]],
		  "textmode" => "lb"},
		  {"coordinates" => ['$t','(1-$t)**2']});
	    point({"type" => "ccirc",
		   "coordinates" => [[$xx,$height/$damp**($i-1)-50],[$xx,-50]],
		   "interval" => [$bound3,$bound2],
		   "staythere" => 0,
		   # "text" => $text[$n-1],
		   "textpos" => [[10,90]],
		  "textmode" => "lb"},
		  {"coordinates" => ['$t','$t**2']});
	    $bound1 = $bound2;
	}
    }
    $xx = -60;
    foreach $n (1..$nballs) {
	$xx += 25;
	$i=0;
	$interval = [50+($n-1)*50/($nballs+2),50+$n*50/($nballs+2)];
	point({"type" => "text",
	       "coordinates" => [[$xx,0]],
	       "interval" => $interval,
	       "staythere" => 1,
	       "textmode" => "br",
	       "textsize" => [[5]],
	       "text" => $text[$n-1]});
    }
}

#- }}}

#- {{{ ggh2:

sub ggh2 {

    $interval1 = [0,25];
    $interval2 = [10,25];
    $interval3 = [25,50];
    $interval4 = [50,75];
    $interval5 = [75,100];

    $pointul = point({"coordinates" => [[-100,100]],
		      "type" => "empty"
		     });
    $pointvul = point({"coordinates" => [[-30,60]],
		       "type" => "empty"
		      });
    $pointll = point({"coordinates" => [[-100,-100]],
		      "type" => "empty"
		     });
    $pointvll = point({"coordinates" => [[-30,-60]],
		       "type" => "empty"
		      });
    $pointhl = point({"coordinates" => [[30,0]],
		       "type" => "empty"
		      });
    $pointhr = point({"coordinates" => [[100,0]],
		       "type" => "empty"
		      });
    $pointur = point({"coordinates" => [[150,100]],
		       "type" => "empty"
		      });
    $pointlr = point({"coordinates" => [[150,-100]],
		      "type" => "empty"
		     });
    $pointc = point({"coordinates" => [[-30,0]],
		     "type" => "empty"
		     });
    
    gluon({"foot" => [${$pointul}{"coordinates"}],
	   "color" => "Red",
	   "fixedwiggles" => 0,
	   "wiggles" => 31,
	   "head" => [${$pointul}{"coordinates"},
		      ${$pointvul}{"coordinates"}],
	   "staythere" => 1,
	   "interval" => $interval1
	  });
    gluon({"foot" => [${$pointll}{"coordinates"}],
	   "color" => "Red",
	   "fixedwiggles" => 0,
	   "wiggles" => 31,
	   "head" => [${$pointll}{"coordinates"},
		      ${$pointvll}{"coordinates"}],
	   "staythere" => 1,
	   "interval" => $interval1
	  });
    line({"foot" => [${$pointc}{"coordinates"}],
	  "head" => [${$pointc}{"coordinates"},${$pointvul}{"coordinates"}],
	   "staythere" => 1,
	  "interval" => $interval2
	 });
    line({"foot" => [${$pointc}{"coordinates"}],
	  "head" => [${$pointc}{"coordinates"},${$pointvll}{"coordinates"}],
	   "staythere" => 1,
	  "interval" => $interval2
	 });
    line({"foot" => [${$pointvll}{"coordinates"}],
	  "head" => [${$pointvll}{"coordinates"},${$pointhl}{"coordinates"}],
	   "staythere" => 1,
	  "interval" => $interval3
	 });
    line({"foot" => [${$pointvul}{"coordinates"}],
	  "head" => [${$pointvul}{"coordinates"},${$pointhl}{"coordinates"}],
	   "staythere" => 1,
	  "interval" => $interval3
	 });
    line({"foot" => [${$pointhl}{"coordinates"}],
	   "head" => [${$pointhl}{"coordinates"},${$pointhr}{"coordinates"}],
	  "dashlength" => [[6]],
	  "interval" => $interval4,
	   "staythere" => 1,
	  "color" => "Blue"});
    line({"foot" => [${$pointhr}{"coordinates"}],
	   "head" => [${$pointhr}{"coordinates"},${$pointur}{"coordinates"}],
	  "interval" => $interval5,
	  "staythere" => 1,
	  "color" => "Green"});
    line({"foot" => [${$pointhr}{"coordinates"}],
	   "head" => [${$pointhr}{"coordinates"},${$pointlr}{"coordinates"}],
	  "interval" => $interval5,
	  "staythere" => 1,
	  "color" => "Green"});

    point({"type" => "ccirc",
	   "coordinates" => [${$pointul}{"coordinates"},
	       ${$pointvul}{"coordinates"}],
	   "color1" => "Red",
	   "color2" => "Red",
	   "interval" => $interval1,
	   "staythere" => 0
	  });
    point({"type" => "ccirc",
	   "coordinates" => [${$pointll}{"coordinates"},
	       ${$pointvll}{"coordinates"}],
	   "color1" => "Red",
	   "color2" => "Red",
	   "interval" => $interval1,
	   "staythere" => 0
	  });
    point({"type" => "ccirc",
	   "coordinates" => [${$pointc}{"coordinates"},
	       ${$pointvul}{"coordinates"}],
	   "interval" => $interval2,
	   "staythere" => 0
	  });
    point({"type" => "ccirc",
	   "coordinates" => [${$pointc}{"coordinates"},
	       ${$pointvll}{"coordinates"}],
	   "interval" => $interval2,
	   "staythere" => 0
	  });
    point({"type" => "ccirc",
	   "coordinates" => [${$pointvul}{"coordinates"},
	       ${$pointhl}{"coordinates"}],
	   "interval" => $interval3,
	   "staythere" => 0
	  });
    point({"type" => "ccirc",
	   "coordinates" => [${$pointvll}{"coordinates"},
	       ${$pointhl}{"coordinates"}],
	   "interval" => $interval3,
	   "staythere" => 0
	  });
    point({"type" => "ccirc",
	   "coordinates" => [${$pointhl}{"coordinates"},
	       ${$pointhr}{"coordinates"}],
	   "interval" => $interval4,
	   "color" => "Blue",
	   "staythere" => 0
	  });
    point({"type" => "ccirc",
	   "coordinates" => [${$pointhr}{"coordinates"},
	       ${$pointur}{"coordinates"}],
	   "interval" => $interval5,
	   "color" => "Green",
	   "staythere" => 0
	  });
    point({"type" => "ccirc",
	   "coordinates" => [${$pointhr}{"coordinates"},
	       ${$pointlr}{"coordinates"}],
	   "interval" => $interval5,
	   "color" => "Green",
	   "staythere" => 0
	  });
}

#- }}}

#- {{{ eeee1:

sub eeee1 {

    $plu = point({"type" => "empty",
		  "coordinates" => [[-100,-50]]});
    $plo = point({"type" => "empty",
		  "coordinates" => [[-100,50]]});
    $p1 = point({"type" => "empty",
		 "coordinates" => [[-20,20]]});
    $p2 = point({"type" => "empty",
		 "coordinates" => [[20,-20]]});
    $pro = point({"type" => "empty",
		 "coordinates" => [[100,50]]});
    $pru = point({"type" => "empty",
		  "coordinates" => [[100,-50]]});
    line({"foot" => [${$plo}{"coordinates"}],
	  "head" => [${$plo}{"coordinates"},${$p1}{"coordinates"}],
	  "text" => "\$e^-\$",
	  "textpos" => [[.5,15]],
	  "color" => "Blue",
	  "staythere" => 1,
	  "interval" => [0,40]});
    line({"foot" => [${$plu}{"coordinates"}],
	  "head" => [${$plu}{"coordinates"},${$p2}{"coordinates"}],
	  "textpos" => [[.5,15]],
	  "text" => '$e^-$',
	  "color" => "Green",
	  "staythere" => 1,
	  "interval" => [0,60]});
    line({"foot" => [${$p2}{"coordinates"}],
	  "head" => [${$p2}{"coordinates"},${$pru}{"coordinates"}],
	  "staythere" => 1,
	    "fixedwiggles" => 0,
	    "text" => '$e^-$',
	    "textpos" => [[.5,15]],
	    "wiggles" => 25,
	    "color" => "Green",
	  "interval" => [60,100]});
    line({"foot" => [${$p1}{"coordinates"}],
	  "staythere" => 1,
	  "text" => '$e^-$',
	  "textpos" => [[.5,15]],
	  "color" => "Blue",
	  "head" => [${$p1}{"coordinates"},${$pro}{"coordinates"}],
	  "interval" => [40,100]});
    photon({"foot" => [${$p1}{"coordinates"}],
	    "head" => [${$p1}{"coordinates"},${$p2}{"coordinates"}],
	    "color" => "Red",
	    "fixedwiggles" => 0,
	    "text" => '$\gamma$',
	    "textpos" => [[.5,20]],
	    "wiggles" => 25,
	    "staythere" => 1,
	    "interval" => [40,60]});
	 
    point({"coordinates" => [${$plo}{"coordinates"},
			     ${$p1}{"coordinates"}],
	   "type" => "ccirc",
	   "interval" => [0,40]});
    point({"coordinates" => [${$plu}{"coordinates"},
			     ${$p2}{"coordinates"}],
	   "type" => "ccirc",
	   "interval" => [0,60]});
    point({"coordinates" => [${$p1}{"coordinates"},
			     ${$p2}{"coordinates"}],
	   "type" => "ccirc",
	   "interval" => [40,60]});
    point({"coordinates" => [${$p1}{"coordinates"},
			     ${$pro}{"coordinates"}],
	   "type" => "ccirc",
	   "interval" => [40,100]});
    point({"coordinates" => [${$p2}{"coordinates"},
			     ${$pru}{"coordinates"}],
	   "type" => "ccirc",
	   "interval" => [60,100]});


}

#- }}}
