home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ARM Club 3
/
TheARMClub_PDCD3.iso
/
hensa
/
maths
/
pgplot_1
/
Examples
/
f77
/
PGDEMO5
< prev
next >
Wrap
Text File
|
1996-05-14
|
3KB
|
74 lines
PROGRAM PGDEM5
C-----------------------------------------------------------------------
C Demonstration program for PGPLOT. This programs shows the use of
C routine PGOLIN to allow the user to draw polygons on the screen.
C As each polygon is completed, it is filled in using routine PGPOLY.
C The user positions the cursor to define the vertices of the polygon.
C He types 'A' to add a vertex at the current cursor position, 'D' to
C delete the nearest vertex, or 'X' to signal that the polygon is
C complete. Two 'X's in succession terminates the program.
C-----------------------------------------------------------------------
INTEGER PGBEG
INTEGER MAXPT, NPT, COL
PARAMETER (MAXPT=50)
REAL X(MAXPT),Y(MAXPT)
INTEGER WHICH
C
100 FORMAT(' Demonstration of PGPLOT cursor routines',
1 ' PGLCUR and PGOLIN.'/
2 ' These routines allow you to draw polygons on the',
3 ' screen, using the'/
4 ' cursor to mark the vertices.'/)
110 FORMAT(/' PGLCUR outlines the polygon as you draw it, PGOLIN',
1 ' just marks the'/
2 ' vertices. Which routine do you want to use? Type 1',
3 ' for PGLCUR, 2 for'/
4 ' PGOLIN:')
120 FORMAT(' Use the cursor to choose the vertices of the polygon'/
1 ' Type A to add a vertex at the cursor position'/
2 ' Type D to delete the last vertex'/
3 ' Type X to close the polygon and shade it'/
4 ' (Type X again to exit from the program)')
C
WRITE (6, 100)
WRITE (6, 110)
READ (5, *, ERR=10, END=10) WHICH
10 IF (WHICH.LT.1 .OR. WHICH.GT.2) WHICH = 1
WRITE (6, 120)
C
C Open device for graphics.
C
IF (PGBEG(0,'?',1,1) .NE. 1) STOP
C
C Clear the screen. Draw a frame at the physical extremities of the
C view surface using full-screen viewport and standard window.
C
CALL PGPAGE
CALL PGSVP(0.0,1.0,0.0,1.0)
CALL PGSWIN(0.0,1.0,0.0,1.0)
CALL PGBOX('BC',0.1,5,'BC',0.1,5)
COL = 0
C
C Increment the color index and then call PGOLIN to allow the user
C to draw a polygon.
C
20 COL = COL+1
CALL PGSCI(COL)
NPT = 0
IF (WHICH.EQ.1) CALL PGLCUR(MAXPT,NPT,X,Y)
IF (WHICH.EQ.2) CALL PGOLIN(MAXPT,NPT,X,Y,-1)
C
C Fill the interior of the polygon in the current color. If less
C than three vertices were supplied, that is a signal to terminate
C the program. Otherwise, go back and draw another polygon.
C
IF (NPT.GE.3) THEN
CALL PGPOLY(NPT,X,Y)
GOTO 20
END IF
C
C Close the device and exit.
C
CALL PGEND
END