#!/usr/bin/perl
#
# Make plots showing relationship between time and distance rolled
#    for a cart going down a track.
#
# MWR 1/27/2021

$mypi = 3.14159;



  my($output_file, $term_options);


##########################################################################
# Linear plot of distance vs. time, individual points
#
  $datafile = "./cart_measures.dat";
  $output_file = "./cart_plot_a.ps";
  $term_options = "postscript color enhanced 'Helvetica,18' size 12,10";

  $cmdfile = "gnuplot.in";
  
  open (CMDFILE, ">$cmdfile") || die("can't open $cmdfile for writing");
  printf CMDFILE "set output '$output_file' \n";
  printf CMDFILE "set term $term_options \n";

  # revert to some oldish default colors
  printf CMDFILE "set style line 1 lt rgb 'red' lw 3  \n";
  printf CMDFILE "set style line 2 lt rgb 'green' lw 3  \n";
  printf CMDFILE "set style line 3 lt rgb 'blue' lw 3  \n";
  printf CMDFILE "set style line 4 lt rgb 'cyan' lw 3  \n";
  printf CMDFILE "set style line 5 lt rgb 'violet' lw 3  \n";


  printf CMDFILE "set datafile separator ','  \n";
  printf CMDFILE "set grid \n";
  printf CMDFILE "set key top right \n";
  printf CMDFILE "set xrange [$xmin:$xmax]  \n";
  printf CMDFILE "set yrange [$ymin:$ymax]  \n";
  printf CMDFILE "set xlabel 'Time since released (seconds)  '  \n";
  printf CMDFILE "set ylabel 'Distance rolled (cm)  ' \n";
  printf CMDFILE "set title 'A cart rolling down a track ' \n"; 

  printf CMDFILE "plot [0:4.0][0:350] '$datafile' ";
  printf CMDFILE "    using 1:2 with points ls 1 pt 6 ps 0.6   t ''  ";
  printf CMDFILE " , ";
  printf CMDFILE "                    '$datafile' ";
  printf CMDFILE "    using 1:3 with points ls 1 pt 6 ps 0.6   t ''  ";
  printf CMDFILE " , ";
  printf CMDFILE "                    '$datafile' ";
  printf CMDFILE "    using 1:4 with points ls 1 pt 6 ps 0.6   t ''  ";
  printf CMDFILE "\n";


  printf CMDFILE "set output \n";
  printf CMDFILE "quit \n";
  close(CMDFILE) ;
  
  $retval = `gnuplot < $cmdfile`;
  printf "retval is ..%s..\n", $retval;
  
  if ($term_options =~ /postscript/) {
    $psfile = $output_file;
    $giffile = $psfile;
    $giffile =~ s/.ps/.png/;
    $cmd = "convert -rotate 90 $psfile $giffile";
    printf "cmd is ..$cmd.. \n";
    $ret = `$cmd`;
  }



##########################################################################
# Linear plot of distance vs. time, avg point with errorbar
#  
#
  $datafile = "./cart_measures.dat";
  $output_file = "./cart_plot_b.ps";
  $term_options = "postscript color enhanced 'Helvetica,18' size 12,10";

  $cmdfile = "gnuplot.in";
  
  open (CMDFILE, ">$cmdfile") || die("can't open $cmdfile for writing");
  printf CMDFILE "set output '$output_file' \n";
  printf CMDFILE "set term $term_options \n";

  # revert to some oldish default colors
  printf CMDFILE "set style line 1 lt rgb 'red' lw 3  \n";
  printf CMDFILE "set style line 2 lt rgb 'green' lw 3  \n";
  printf CMDFILE "set style line 3 lt rgb 'blue' lw 3  \n";
  printf CMDFILE "set style line 4 lt rgb 'cyan' lw 3  \n";
  printf CMDFILE "set style line 5 lt rgb 'violet' lw 3  \n";


  printf CMDFILE "set datafile separator ','  \n";
  printf CMDFILE "set grid \n";
  printf CMDFILE "set key top right \n";
  printf CMDFILE "set xrange [$xmin:$xmax]  \n";
  printf CMDFILE "set yrange [$ymin:$ymax]  \n";
  printf CMDFILE "set xlabel 'Time since released (seconds)  '  \n";
  printf CMDFILE "set ylabel 'Distance rolled (cm)  ' \n";
  printf CMDFILE "set title 'A cart rolling down a track ' \n"; 

  printf CMDFILE "plot [0:4.0][0:350] '$datafile' ";
  printf CMDFILE "    using 1:5:6 with yerrorbars ls 1 pt 6 ps 0.6   t ''  ";
  printf CMDFILE "\n";


  printf CMDFILE "set output \n";
  printf CMDFILE "quit \n";
  close(CMDFILE) ;
  
  $retval = `gnuplot < $cmdfile`;
  printf "retval is ..%s..\n", $retval;
  
  if ($term_options =~ /postscript/) {
    $psfile = $output_file;
    $giffile = $psfile;
    $giffile =~ s/.ps/.png/;
    $cmd = "convert -rotate 90 $psfile $giffile";
    printf "cmd is ..$cmd.. \n";
    $ret = `$cmd`;
  }



##########################################################################
# Linear plot of distance vs. (time)^2, avg point with errorbar
#  
#
  $datafile = "./cart_measures.dat";
  $output_file = "./cart_plot_c.ps";
  $term_options = "postscript color enhanced 'Helvetica,18' size 12,10 ";

  $cmdfile = "gnuplot.in";
  
  open (CMDFILE, ">$cmdfile") || die("can't open $cmdfile for writing");
  printf CMDFILE "set output '$output_file' \n";
  printf CMDFILE "set term $term_options \n";

  # revert to some oldish default colors
  printf CMDFILE "set style line 1 lt rgb 'red' lw 3  \n";
  printf CMDFILE "set style line 2 lt rgb 'green' lw 3  \n";
  printf CMDFILE "set style line 3 lt rgb 'blue' lw 3  \n";
  printf CMDFILE "set style line 4 lt rgb 'cyan' lw 3  \n";
  printf CMDFILE "set style line 5 lt rgb 'violet' lw 3  \n";


  printf CMDFILE "set datafile separator ','  \n";
  printf CMDFILE "set grid \n";
  printf CMDFILE "set key top right \n";
  printf CMDFILE "set xrange [$xmin:$xmax]  \n";
  printf CMDFILE "set yrange [$ymin:$ymax]  \n";
  printf CMDFILE "set xlabel 'Square of time since released (seconds)^2  '  \n";
  printf CMDFILE "set ylabel 'Distance rolled (cm)  ' \n";
  printf CMDFILE "set title 'A cart rolling down a track ' \n"; 

  printf CMDFILE "plot [0:13.0][0:350] '$datafile' ";
  printf CMDFILE "    using (\$1*\$1):5:6 with yerrorbars ls 1 pt 6 ps 0.6   t ''  ";
  printf CMDFILE "\n";


  printf CMDFILE "set output \n";
  printf CMDFILE "quit \n";
  close(CMDFILE) ;
  
  $retval = `gnuplot < $cmdfile`;
  printf "retval is ..%s..\n", $retval;
  
  if ($term_options =~ /postscript/) {
    $psfile = $output_file;
    $giffile = $psfile;
    $giffile =~ s/.ps/.png/;
    $cmd = "convert -rotate 90 $psfile $giffile";
    printf "cmd is ..$cmd.. \n";
    $ret = `$cmd`;
  }



##########################################################################
# Linear plot of avg velocity vs. time
#
  $datafile = "./cart_velocity.dat";
  $output_file = "./cart_plot_d.ps";
  $term_options = "postscript color enhanced 'Helvetica,18' size 12,10";

  $cmdfile = "gnuplot.in";
  
  open (CMDFILE, ">$cmdfile") || die("can't open $cmdfile for writing");
  printf CMDFILE "set output '$output_file' \n";
  printf CMDFILE "set term $term_options \n";

  # revert to some oldish default colors
  printf CMDFILE "set style line 1 lt rgb 'red' lw 3  \n";
  printf CMDFILE "set style line 2 lt rgb 'green' lw 3  \n";
  printf CMDFILE "set style line 3 lt rgb 'blue' lw 3  \n";
  printf CMDFILE "set style line 4 lt rgb 'cyan' lw 3  \n";
  printf CMDFILE "set style line 5 lt rgb 'violet' lw 3  \n";


  printf CMDFILE "set grid \n";
  printf CMDFILE "set key top right \n";
  printf CMDFILE "set xrange [$xmin:$xmax]  \n";
  printf CMDFILE "set yrange [$ymin:$ymax]  \n";
  printf CMDFILE "set xlabel 'Time since released (seconds)  '  \n";
  printf CMDFILE "set ylabel 'Average velocity (cm/s)  ' \n";
  printf CMDFILE "set title 'A cart rolling down a track ' \n"; 

  printf CMDFILE "plot [][] '$datafile' ";
  printf CMDFILE "    using 1:2:3 with yerrorbars ls 1 pt 6 ps 1.2   t ''  ";
  printf CMDFILE "\n";


  printf CMDFILE "set output \n";
  printf CMDFILE "quit \n";
  close(CMDFILE) ;
  
  $retval = `gnuplot < $cmdfile`;
  printf "retval is ..%s..\n", $retval;
  
  if ($term_options =~ /postscript/) {
    $psfile = $output_file;
    $giffile = $psfile;
    $giffile =~ s/.ps/.png/;
    $cmd = "convert -rotate 90 $psfile $giffile";
    printf "cmd is ..$cmd.. \n";
    $ret = `$cmd`;
  }


##########################################################################
# Linear plot of avg velocity vs. time
#     with lines showing acceleration values
#
  $datafile = "./cart_velocity.dat";
  $output_file = "./cart_plot_e.ps";
  $term_options = "postscript color enhanced 'Helvetica,18' size 12,10";

  $cmdfile = "gnuplot.in";
  
  open (CMDFILE, ">$cmdfile") || die("can't open $cmdfile for writing");
  printf CMDFILE "set output '$output_file' \n";
  printf CMDFILE "set term $term_options \n";

  # revert to some oldish default colors
  printf CMDFILE "set style line 1 lt rgb 'red' lw 3  \n";
  printf CMDFILE "set style line 2 lt rgb 'green' lw 3  \n";
  printf CMDFILE "set style line 3 lt rgb 'blue' lw 3  \n";
  printf CMDFILE "set style line 4 lt rgb 'cyan' lw 3  \n";
  printf CMDFILE "set style line 5 lt rgb 'violet' lw 3  \n";


  printf CMDFILE "set grid \n";
  printf CMDFILE "set key top left \n";
  printf CMDFILE "set xrange [$xmin:$xmax]  \n";
  printf CMDFILE "set yrange [$ymin:$ymax]  \n";
  printf CMDFILE "set xlabel 'Time since released (seconds)  '  \n";
  printf CMDFILE "set ylabel 'Average velocity (cm/s)  ' \n";
  printf CMDFILE "set title 'A cart rolling down a track ' \n"; 

  printf CMDFILE "plot [][] '$datafile' ";
  printf CMDFILE "    using 1:2:3 with yerrorbars ls 1 pt 6 ps 1.2   t ''  ";
  printf CMDFILE " , ";
  printf CMDFILE "    -3.36+53.40*x with lines lc -1 lw 2 t 'accel = 53 cm/s*s' ";
  printf CMDFILE " , ";
  printf CMDFILE "    -36.0+73*x with lines ls 3 t 'accel = 73 cm/s*s' ";
  printf CMDFILE " , ";
  printf CMDFILE "    26.0+38*x with lines ls 5 t 'accel = 38 cm/s*s' ";
  printf CMDFILE "\n";


  printf CMDFILE "set output \n";
  printf CMDFILE "quit \n";
  close(CMDFILE) ;
  
  $retval = `gnuplot < $cmdfile`;
  printf "retval is ..%s..\n", $retval;
  
  if ($term_options =~ /postscript/) {
    $psfile = $output_file;
    $giffile = $psfile;
    $giffile =~ s/.ps/.png/;
    $cmd = "convert -rotate 90 $psfile $giffile";
    printf "cmd is ..$cmd.. \n";
    $ret = `$cmd`;
  }



##########################################################################
# Linear plot of avg accel vs. time
#
  $datafile = "./cart_accel.dat";
  $output_file = "./cart_plot_f.ps";
  $term_options = "postscript color enhanced 'Helvetica,18' size 12,10";

  $cmdfile = "gnuplot.in";
  
  open (CMDFILE, ">$cmdfile") || die("can't open $cmdfile for writing");
  printf CMDFILE "set output '$output_file' \n";
  printf CMDFILE "set term $term_options \n";

  # revert to some oldish default colors
  printf CMDFILE "set style line 1 lt rgb 'red' lw 3  \n";
  printf CMDFILE "set style line 2 lt rgb 'green' lw 3  \n";
  printf CMDFILE "set style line 3 lt rgb 'blue' lw 3  \n";
  printf CMDFILE "set style line 4 lt rgb 'cyan' lw 3  \n";
  printf CMDFILE "set style line 5 lt rgb 'violet' lw 3  \n";


  printf CMDFILE "set grid \n";
  printf CMDFILE "set key top right \n";
  printf CMDFILE "set xrange [$xmin:$xmax]  \n";
  printf CMDFILE "set yrange [$ymin:$ymax]  \n";
  printf CMDFILE "set xlabel 'Time since released (seconds)  '  \n";
  printf CMDFILE "set ylabel 'Average acceleration (cm/s*s)  ' \n";
  printf CMDFILE "set title 'A cart rolling down a track ' \n"; 

  printf CMDFILE "plot [0.5:3.5] '$datafile' ";
  printf CMDFILE "    using 1:2:3 with yerrorbars ls 1 pt 6 ps 1.2   t ''  ";
  printf CMDFILE "\n";


  printf CMDFILE "set output \n";
  printf CMDFILE "quit \n";
  close(CMDFILE) ;
  
  $retval = `gnuplot < $cmdfile`;
  printf "retval is ..%s..\n", $retval;
  
  if ($term_options =~ /postscript/) {
    $psfile = $output_file;
    $giffile = $psfile;
    $giffile =~ s/.ps/.png/;
    $cmd = "convert -rotate 90 $psfile $giffile";
    printf "cmd is ..$cmd.. \n";
    $ret = `$cmd`;
  }









exit 0;
