plotdev='x'
plotdev='ps'

common colors, r_orig, g_orig, b_orig, r_curr, g_curr, b_curr


ecolor=1  &  bcolor=4

set_plot,plotdev
IF plotdev eq 'x' THEN  device,retain=2,pseudo=8
IF plotdev eq 'x' THEN  erase
IF plotdev eq 'ps' THEN device,/color,file='emwave.ps',bits=8

;make a color table

     r= [  0,255,255,  0,  0,  0]
     g= [  0,  0,255,255,  0,  0]
     b= [  0,  0,  0,255,255,  0]
     tvlct,r,g,b

npts= 410
axis=findgen(npts+1)/npts  &  sinewave=sin(axis*6.8*!pi)  &  zero=fltarr(npts+1)

min_axis= axis(0) & max_axis= axis(npts)
min_sinewave= -1. & max_sinewave= 1.
min_zero= -1. & max_zero= 1.

!x.s= [-min_axis, 1.]/(max_axis - min_axis)
!y.s= [-min_sinewave, 1.]/(max_sinewave - min_sinewave)
!z.s= [-min_zero, 1.]/(max_zero - min_zero)

t3d,/reset,rot=[15,-30,0],trans=[.7,.3,0.] ,scale=.6*[1,1,1], pers=5.
erase
plots,axis,sinewave,zero,/t3d,/data, thick=3, color=ecolor
plots,axis,zero,sinewave,/t3d,/data, thick=3, color=bcolor
plots,axis,zero,zero,/t3d,/data, thick=1

arrow_x= [0., 1., .8, .8, 1., .8, .8, 1.]
arrow_y= [0., 0., .1, -.1, 0.,.05,-.05,0.]
arrow_z= fltarr(8)

arrow_ax_x= 1.02 + arrow_x*.1
arrow_ax_y= 0.00 + arrow_y*.1
arrow_ax_z= arrow_z

plots,arrow_ax_x, arrow_ax_y, arrow_ax_z,/t3d,/data

index= npts-30

arrow_e_x=arrow_z+axis(index)
arrow_e_y=arrow_x*sinewave(index)
arrow_e_z=arrow_y*sinewave(index)*.5

plots,arrow_e_x, arrow_e_y, arrow_e_z, /t3d,/data, color=ecolor

arrow_b_x= arrow_e_x
arrow_b_y= arrow_y*sinewave(index)*.5
arrow_b_z= arrow_x*sinewave(index)

plots, arrow_b_x, arrow_b_y, arrow_b_z, /t3d, /data, color=bcolor

xyouts, arrow_ax_x(0),arrow_ax_y(0)+.03, z=arrow_ax_z(0), 'Direction of', /t3d, /data
xyouts, arrow_ax_x(0),arrow_ax_y(0)-.06, z=arrow_ax_z(0), 'travel',/t3d,/data


xyouts, arrow_e_x(1)+.02, arrow_e_y(1)/2, z= arrow_e_z(1), $
   'Electric field',/t3d, /data, color=ecolor, text_axes=0

xyouts, (arrow_b_x(1)+arrow_b_x(0))/2+.15, arrow_b_y(1), z= arrow_b_z(1), $
   'Magnetic field',/t3d, /data, color=bcolor

xyouts, 0.1,0.8,'An Electromagnetic Wave', size=2.0, /data

IF plotdev EQ 'ps' THEN device,/close

END
