home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / maths / pgplot_1 / Examples / f77 / PGDEMO5 < prev    next >
Text File  |  1996-05-14  |  3KB  |  74 lines

  1.       PROGRAM PGDEM5
  2. C-----------------------------------------------------------------------
  3. C Demonstration program for PGPLOT. This programs shows the use of
  4. C routine PGOLIN to allow the user to draw polygons on the screen.
  5. C As each polygon is completed, it is filled in using routine PGPOLY.
  6. C The user positions the cursor to define the vertices of the polygon.
  7. C He types 'A' to add a vertex at the current cursor position, 'D' to
  8. C delete the nearest vertex, or 'X' to signal that the polygon is 
  9. C complete. Two 'X's in succession terminates the program.
  10. C-----------------------------------------------------------------------
  11.       INTEGER PGBEG
  12.       INTEGER MAXPT, NPT, COL
  13.       PARAMETER (MAXPT=50)
  14.       REAL X(MAXPT),Y(MAXPT)
  15.       INTEGER WHICH
  16. C
  17.   100 FORMAT(' Demonstration of PGPLOT cursor routines',
  18.      1       ' PGLCUR and PGOLIN.'/
  19.      2       ' These routines allow you to draw polygons on the',
  20.      3       ' screen, using the'/
  21.      4       ' cursor to mark the vertices.'/)
  22.   110 FORMAT(/' PGLCUR outlines the polygon as you draw it, PGOLIN',
  23.      1       ' just marks the'/
  24.      2       ' vertices. Which routine do you want to use? Type 1',
  25.      3       ' for PGLCUR, 2 for'/
  26.      4       ' PGOLIN:')
  27.   120 FORMAT(' Use the cursor to choose the vertices of the polygon'/
  28.      1       '   Type A to add a vertex at the cursor position'/
  29.      2       '   Type D to delete the last vertex'/
  30.      3       '   Type X to close the polygon and shade it'/
  31.      4       '   (Type X again to exit from the program)')
  32. C
  33.       WRITE (6, 100)
  34.       WRITE (6, 110)
  35.       READ (5, *, ERR=10, END=10) WHICH
  36.  10   IF (WHICH.LT.1 .OR. WHICH.GT.2) WHICH = 1
  37.       WRITE (6, 120)
  38. C
  39. C Open device for graphics.
  40. C
  41.       IF (PGBEG(0,'?',1,1) .NE. 1) STOP
  42. C
  43. C Clear the screen. Draw a frame at the physical extremities of the
  44. C view surface using full-screen viewport and standard window.
  45. C
  46.       CALL PGPAGE
  47.       CALL PGSVP(0.0,1.0,0.0,1.0)
  48.       CALL PGSWIN(0.0,1.0,0.0,1.0)
  49.       CALL PGBOX('BC',0.1,5,'BC',0.1,5)
  50.       COL = 0
  51. C
  52. C Increment the color index and then call PGOLIN to allow the user
  53. C to draw a polygon.
  54. C
  55.    20 COL = COL+1
  56.       CALL PGSCI(COL)
  57.       NPT = 0
  58.       IF (WHICH.EQ.1) CALL PGLCUR(MAXPT,NPT,X,Y)
  59.       IF (WHICH.EQ.2) CALL PGOLIN(MAXPT,NPT,X,Y,-1)
  60. C
  61. C Fill the interior of the polygon in the current color. If less
  62. C than three vertices were supplied, that is a signal to terminate
  63. C the program.  Otherwise, go back and draw another polygon.
  64. C
  65.       IF (NPT.GE.3) THEN
  66.            CALL PGPOLY(NPT,X,Y)
  67.            GOTO 20
  68.        END IF 
  69. C
  70. C Close the device and exit.
  71. C
  72.       CALL PGEND
  73.       END
  74.