/* Draw plane polarized light figures for illustration */ /* gcc lightwave3.c -L/usr/X11R6/lib -lplot -lXaw -lXmu -lXt -lSM -lICE -lXext -lX11 -lm */ /* Jeffrey R. Schmidt */ /* X output */ #include #include #include #include #include #define N 200 #define PI 3.1415927 double EX[N],EY[N],EZ[N], EX0[N],EY0[N], EZ0[N]; /* base and tips of arrows */ double BX[N],BY[N],BZ[N],BX0[N],BY0[N],BZ0[N]; /* base and tips of arrows */ double dx,omega,E,size,theta,phi,psi,tmpx, tmpy, tmpz,one[3],X[3],Y[3],Z[3]; double a11,a12,a13,a21,a22,a23,a31,a32,a33,dt,t; int n,m,k,time; int pl_handle; char buffer[6],*labels; FILE *fptr; char *name; int dec,sign, num_char; char *prefix; void draw_arrow(double x0, double y0, double x, double y); void draw_arrow2(double x0, double y0, double x, double y); main (int argc, char *argv[]) { char *base_ptr=".pnm"; char name[10], sbuff[8], *which; srand(19); size=6.0; dx=size/100.0; omega=0.7*PI; E=size/4.0; num_char=0; /* increase this if you expect very many frames */ strcpy(name,base_ptr); /* place file extension in name variable */ theta=0.8; phi=0.3; psi=0.1; dt=0.07123; /* pl_parampl ("USE_DOUBLE_BUFFERING", "yes"); */ pl_parampl ("BITMAPSIZE", "400x400"); pl_parampl ("BG_COLOR", "white"); pl_parampl ("TRANSPARENT_COLOR", "white"); pl_parampl ("GIF_ITERATIONS", "100"); pl_parampl ("GIF_DELAY", "5"); pl_handle = pl_newpl ("GIF", stdin, stdout, stderr); pl_selectpl (pl_handle); if (pl_openpl () < 0) /* open Plotter */ { fprintf (stderr, "Couldn't open Plotter\n"); return 1; } pl_fspace (-size, -size, size, size); pl_flinewidth (0.005); for(time=1;time<100;time++){ t=(double)time*dt; pl_erase(); for(n=0;n