#include #include #include #include #include "ps.h" double f(double,double); void draw(double, double, int); void frame(void); int main(void) { init(); viewport(0.2,0.2,0.8,0.5); xyworld(0.0,0.0,2.0,1.0); draw(1.0,-1.0,20); frame(); fin(); return 0; } void frame() { int ix,nx,iy,ny,ixx,iyy; double x,dx,y,dy; linewidth(1.0); rect(0.0,0.0,2.0,1.0,0.0,1.0,1); nx=4; for(ix=0;ix<=2*nx-1;ix++){ setgray(0.0); x=(double)ix/(double)nx*2.0;dy=0.05; plot(x,0.0,3);plot(x,dy,2);stroke(); } ny=2; for(iy=0;iy<=ny-1;iy++){ setgray(0.0); y=(double)iy/(double)ny; dx=0.05; plot(0.0,y,3);plot(dx,y,2);stroke(); } textx(1.5,0.0,1,"x"); textx(0.0,0.02,1,"0");textx(1.0,0.02,1,"1");textx(2.0,0.02,1,"2"); texty(0.0,0.75,1,"y"); texty(0.0,0.0,1,"0");texty(0.0,0.5,3,"0.5");texty(0.0,1.0,1,"1"); } double f(double x,double y) { double pi, fx; pi=3.14159; fx=sin(2.0*pi*x)*sin(pi*y); return(fx); } void draw(double fmax,double fmin, int nline) { double x,y,dx,dy,color,r,g,b;int nx,ny,ix,iy; nx=200;ny=100;dx=2.0/(double)nx;dy=1.0/(double)ny; for(iy=0;iy<=ny;iy++){ y=(double)iy/(double)ny; for(ix=0;ix<=nx;ix++){ x=(double)ix/(double)nx; color=(f(x,y)-fmin)/(fmax-fmin); plot((ix-1)*dx,(iy-1)*dy,3);plot(ix*dx,(iy-1)*dy,2); plot(ix*dx,iy*dy,2);plot((ix-1)*dx,iy*dy,2);closepath(); setrgb(color*1.0,0.0,1.0-color*1.0); fill();stroke(); } } }