home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 344b.lha / plplot_v2.6 / src / plwind.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-01-27  |  1.5 KB  |  55 lines

  1. #include "plplot.h"
  2.  
  3. void plwind(xmin,xmax,ymin,ymax)
  4. PLFLT xmin, xmax, ymin, ymax;
  5. {
  6.     PLINT vppxmi, vppxma, vppymi, vppyma;
  7.     PLFLT dx, dy;
  8.     PLFLT vpwxmi, vpwxma, vpwymi, vpwyma;
  9.     PLFLT vpxmi, vpxma, vpymi, vpyma;
  10.     PLFLT wpxscl, wpxoff, wpyscl, wpyoff;
  11.     PLFLT wmxscl, wmxoff, wmyscl, wmyoff;
  12.     PLINT level;
  13.  
  14.     glev(&level);
  15.     if (level<2) plexit("Please set up viewport before calling plwind.");
  16.  
  17.     gvpp(&vppxmi,&vppxma,&vppymi,&vppyma);
  18.     gvpd(&vpxmi,&vpxma,&vpymi,&vpyma);
  19.  
  20.     dx = (xmax-xmin) * 1.0e-5;
  21.     dy = (ymax-ymin) * 1.0e-5;
  22.  
  23.     if ((xmin == xmax) || (ymin == ymax))
  24.         plexit("Invalid window limits in plwind.");
  25.  
  26. /* The true plot window is made slightly larger than requested so that */
  27. /* the end limits will be on the graph  */
  28.  
  29.     svpw((PLFLT)(xmin-dx),(PLFLT)(xmax+dx),(PLFLT)(ymin-dy),(PLFLT)(ymax+dy));
  30.     gvpw(&vpwxmi,&vpwxma,&vpwymi,&vpwyma);
  31.  
  32. /* Compute the scaling between coordinate systems */
  33.  
  34.     dx = vpwxma - vpwxmi;
  35.     dy = vpwyma - vpwymi;
  36.  
  37.     wpxscl  = (vppxma - vppxmi) / dx;
  38.     wpxoff  = (xmax * vppxmi - xmin * vppxma) / dx;
  39.     wpyscl  = (vppyma - vppymi) / dy;
  40.     wpyoff  = (ymax * vppymi - ymin * vppyma) / dy;
  41.     swp(wpxscl,wpxoff,wpyscl,wpyoff);
  42.  
  43.     vpxmi = dcmmx(vpxmi);
  44.     vpxma = dcmmx(vpxma);
  45.     vpymi = dcmmy(vpymi);
  46.     vpyma = dcmmy(vpyma);
  47.     wmxscl = (vpxma - vpxmi) / dx;
  48.     wmxoff = (xmax * vpxmi - xmin * vpxma) / dx;
  49.     wmyscl = (vpyma - vpymi) / dy;
  50.     wmyoff = (ymax * vpymi - ymin * vpyma) / dy;
  51.     swm(wmxscl,wmxoff,wmyscl,wmyoff);
  52.  
  53.     slev(3);
  54. }
  55.