#!/usr/bin/perl
# 
# Make some nice plots showing sine curves adding out of phase
#   to illustrate diffraction gratings
#
# MWR 5/14/2007


$twopi = 6.2831853;

# make one special graph with no red section, for starting point

    # graph of two waves meeting in phase
    $data = sprintf "cosine_progress_%02d.dat", 0;
    $title = "";
    $cmdfile = sprintf "cosine_progress_%02d.gnu", -1;
    $psfile = sprintf "cosine_progress_%02d.ps", -1;
    open(CMDFILE, ">$cmdfile") || die("can't open $cmdfile");
    printf CMDFILE "set output '$psfile' \n";
    printf CMDFILE "set term postscript color \n";
    printf CMDFILE "set grid \n";
    printf CMDFILE "set key top left \n";
    printf CMDFILE "set xlabel 'Distance wave has travelled (wavelengths)' \n";
    printf CMDFILE "set ylabel 'Amplitude of wave'  \n";
    printf CMDFILE "set title '$title'  \n";
    printf CMDFILE "plot [-1.5:1.5][-1.1:1.2] ";
    #printf CMDFILE " '$data_next' using (\$1/$twopi):(\$2) ";
    #printf CMDFILE "     with points t '' pt 5 lt 1 ps 0.6  ";
    #printf CMDFILE " , ";
    printf CMDFILE " '$data' using (\$1/$twopi):(\$2) ";
    printf CMDFILE "     with points t '' pt 6 lt -1 ps 0.8  ";
    #printf CMDFILE " , ";
    #printf CMDFILE " 'center.dat' using (\$1):(\$2) t '' with lines lt -1  ";
    printf CMDFILE " \n";
    
    printf CMDFILE "quit \n";
    close(CMDFILE);
    
    $cmd = "gnuplot $cmdfile ";
    printf "cmd is ..$cmd.. \n";
    $ret = `$cmd`;
    $giffile = $psfile;
    $giffile =~ s/.ps/.gif/;
    $cmd = "convert -rotate 90 $psfile $giffile";
    printf "cmd is ..$cmd.. \n";
    $ret = `$cmd`;


# now make a series of graphs with red section showing new motion

  for ($snapshot = 0; $snapshot <= 11; $snapshot++) {

    # graph of two waves meeting in phase
    $data = sprintf "cosine_progress_%02d.dat", $snapshot;
    $data_next = sprintf "cosine_progress_%02d.dat", $snapshot+1;
    $title = "";
    $cmdfile = sprintf "cosine_progress_%02d.gnu", $snapshot;
    $psfile = sprintf "cosine_progress_%02d.ps", $snapshot;
    open(CMDFILE, ">$cmdfile") || die("can't open $cmdfile");
    printf CMDFILE "set output '$psfile' \n";
    printf CMDFILE "set term postscript color \n";
    printf CMDFILE "set grid \n";
    printf CMDFILE "set key top left \n";
    printf CMDFILE "set xlabel 'Distance wave has travelled (wavelengths)' \n";
    printf CMDFILE "set ylabel 'Amplitude of wave'  \n";
    printf CMDFILE "set title '$title'  \n";
    printf CMDFILE "plot [-1.5:1.5][-1.1:1.2] ";
    printf CMDFILE " '$data_next' using (\$1/$twopi):(\$2) ";
    printf CMDFILE "     with points t '' pt 5 lt 1 ps 0.6  ";
    printf CMDFILE " , ";
    printf CMDFILE " '$data' using (\$1/$twopi):(\$2) ";
    printf CMDFILE "     with points t '' pt 6 lt -1 ps 0.8  ";
    #printf CMDFILE " , ";
    #printf CMDFILE " 'center.dat' using (\$1):(\$2) t '' with lines lt -1  ";
    printf CMDFILE " \n";
    
    printf CMDFILE "quit \n";
    close(CMDFILE);
    
    $cmd = "gnuplot $cmdfile ";
    printf "cmd is ..$cmd.. \n";
    $ret = `$cmd`;
    $giffile = $psfile;
    $giffile =~ s/.ps/.gif/;
    $cmd = "convert -rotate 90 $psfile $giffile";
    printf "cmd is ..$cmd.. \n";
    $ret = `$cmd`;

  }
    
    

exit 0;
