A B&W example of scientific drawing created with PSPLOT
Scroll down to see the Fortran code for this example. It
shows all the calls to the relevant PSLOT routines
The Fortran code
character*80 scr
dimension xa(4),ya(4),xb(4),yb(4),xx(10),yy(10)
dimension xc(5000),yc(5000),xd(5000),yd(5000)
call newdev('onehalf3d.ps',12)
call psinit(.true.)
call plot(1.,2.,-3)
pi=4.*abs(atan(1.))
angdeg=60.
ang=angdeg*pi/180.
sang=sin(ang)
cang=cos(ang)
ythk=.75
ythk2=ythk+.45
thk=.02
tmed=.01
thn=0.
xwid=3.5
ylen=6.
ldsh=8
call setlw(tmed)
xa(1)=0.
xa(2)=xa(1)+xwid
xa(3)=xa(2)
xa(4)=xa(1)
ya(1)=0.
ya(2)=ya(1)
ya(3)=ya(2)+ythk
ya(4)=ya(3)
xb(1)=xa(1)+ylen*cang
xb(2)=xb(1)+xwid
xb(3)=xb(2)
xb(4)=xb(1)
yb(1)=ya(1)+ylen*sang
yb(2)=yb(1)
yb(3)=yb(2)+ythk
yb(4)=yb(3)
call sldlin(xa(4),ya(4),xa(3),ya(3),0.)
call sldlin(xa(3),ya(3),xb(3),yb(3),0.)
call sldlin(xb(3),yb(3),xb(4),yb(4),0.)
call dshlin(xa(1),ya(1),xa(2),ya(2),ldsh,0.)
call dshlin(xb(1),yb(1),xb(2),yb(2),ldsh,0.)
call dshlin(xa(4),ya(4),xa(4),ya(4)-ythk2,ldsh,0.)
call dshlin(xa(3),ya(3),xa(3),ya(3)-ythk2,ldsh,0.)
call dshlin(xb(4),yb(4),xb(4),yb(4)-ythk2,ldsh,0.)
call dshlin(xb(3),yb(3),xb(3),yb(3)-ythk2,ldsh,0.)
call dshlin(xa(2),ya(2),xb(2),yb(2),ldsh,0.)
over=1.2
yopen=ylen/6.
ymouth=ylen/2.
x1=xa(4)-over*cang
y1=ya(4)-over*sang
x2=xb(4)+over*cang
y2=yb(4)+over*sang
xleft=xa(4)+ymouth*cang
xright=xleft+yopen*cang
yleft=ya(4)+ymouth*sang
yright=yleft+yopen*sang
c Draw ellipses
c Define clipping region for ellipses
call gsav
xc(1)=xa(4)
yc(1)=ya(4)
xc(2)=xb(4)
yc(2)=yb(4)
xc(3)=xb(3)
yc(3)=yb(3)
xc(4)=xa(3)
yc(4)=ya(3)
call clipbox(xc,yc,4)
call plot(.5*(xleft+xright),.5*(yleft+yright),-3)
a=1.8
b=1.
nc=0
anginc=1.
do angd=0.,360.,anginc
ang=angd*pi/180.
nc=nc+1
xc(nc)=a*cos(ang)
yc(nc)=b*sin(ang)
xd(nc)=xc(nc)
yd(nc)=yc(nc)-ythk
enddo
call sldcrv(xc,yc,nc,0.)
c Draw vertical dashed lines
call setlw(0.)
nend=76
do n=1,nend,4
xp=xc(n)
yp=yc(n)
nlst1=n
call dshlin(xp,yp,xp,yp-ythk,6,0.)
enddo
nst=nc-108
do n=nc,nst,-4
xp=xc(n)
yp=yc(n)
nlst2=n
call dshlin(xp,yp,xp,yp-ythk,6,0.)
enddo
call plot(-.5*(xleft+xright),-.5*(yleft+yright),-3)
call grest
c Draw bottom dashed curve
c Define clipping region for ellipses
call gsav
call plot(.5*(xleft+xright),.5*(yleft+yright),-3)
xx(1)=xc(nlst1)
yy(1)=yc(nlst1)
xx(2)=xx(1)+5.
yy(2)=yy(1)
xx(3)=xx(2)
yy(3)=yy(2)-5
xx(4)=xx(1)
yy(4)=yy(3)
call clipbox(xx,yy,4)
call dshcrv(xd,yd,nend,6,0.)
call plot(-.5*(xleft+xright),-.5*(yleft+yright),-3)
call grest
call gsav
call plot(.5*(xleft+xright),.5*(yleft+yright),-3)
xx(1)=xc(nlst2)
yy(1)=yc(nlst2)
xx(2)=xx(1)+5.
yy(2)=yy(1)
xx(3)=xx(2)
yy(3)=yy(2)-5
xx(4)=xx(1)
yy(4)=yy(3)
call clipbox(xx,yy,4)
nd=0
do n=nc,nlst2,-1
nd=nd+1
xc(nd)=xd(n)
yc(nd)=yd(n)
enddo
call dshcrv(xc,yc,nd,6,0.)
call plot(-.5*(xleft+xright),-.5*(yleft+yright),-3)
call grest
c Shade shoreline
do n=1,11
shthk2=.5-(n-1)*.05
gryl=.98-(n-1)*.025
xx(1)=x1
yy(1)=y1
xx(2)=xleft
yy(2)=yleft
xx(3)=xx(2)-shthk2
yy(3)=yy(2)
xx(4)=xx(1)-shthk2
yy(4)=yy(1)
call filrgn(xx,yy,4,gryl)
xx(1)=xright
yy(1)=yright
xx(2)=x2
yy(2)=y2
xx(3)=xx(2)-shthk2
yy(3)=yy(2)
xx(4)=xx(1)-shthk2
yy(4)=yy(1)
call filrgn(xx,yy,4,gryl)
enddo
shthk=.2
rdiv=.15
xp=xleft
yp=yleft
5 continue
call sldlin(xp,yp,xp-shthk,yp,.01)
xp=xp-rdiv*cang
yp=yp-rdiv*sang
if(xp.ge.x1.and.yp.ge.y1) goto 5
xp=xright
yp=yright
10 continue
call sldlin(xp,yp,xp-shthk,yp,.01)
xp=xp+rdiv*cang
yp=yp+rdiv*sang
if(xp.le.x2.and.yp.le.y2) goto 10
call sldlin(x1,y1,xleft,yleft,0.)
call sldlin(xright,yright,x2,y2,0.)
call dshlin(xleft,yleft,xleft,yleft-ythk,6,tmed)
call dshlin(xright,yright,xright,yright-ythk,6,tmed)
call dshlin(x1,y1-ythk,xb(1),yb(1),ldsh,tmed)
c Text labels
size=.14
xp=xwid/3.
ym=ya(4)-ythk/2.
call grksym(xp,ym-size/2.,size,41,0.,1,1)
call subber(1h1,1,size,0.)
xp=xwid*2./3.
call keksym(xp,ym-size/2.,size,1hH,0.,1,1)
call subber(1h1,1,size,0.)
yoff=.1
call sldlin(xp,ym+yoff,xp,ya(4),0.)
call farohed(xp,ya(4),0.,.1,20.,0,.true.)
call sldlin(xp,ym-yoff,xp,ya(1),0.)
call farohed(xp,ya(1),180.,.1,20.,0,.true.)
xp=1.35
yp=ya(1)-.4
call grksym(xp,yp,size,41,0.,1,1)
call subber(1h2,1,size,0.)
call keksym(999.,999.,size,5h ( > ,0.,5,0)
call grksym(999.,999.,size,41,0.,1,1)
call subber(1h1,1,size,0.)
call keksym(999.,999.,size,2h ),0.,2,0)
xp=xleft-.5
yp=yleft+.3
ang=0.
call keksym(xp,yp,size,1hM,ang,1,0)
call subber(1hr,1,size,ang)
x1=xp+.3
yp=yp+size/2.
x2=x1+.4
call sldlin(x1,yp,x2,yp,0.)
call farohed(x2,yp,90.,.1,20.,0,.true.)
xp=xleft+1.1
yp=yleft
call grksym(xp,yp,size,41,0.,1,1)
call subber(1hr,1,size,0.)
xp=4.3
yp=yleft
call grksym(xp,yp,size,41,0.,1,1)
call subber(1h1,1,size,0.)
size=.15
xp=1.1
yp=7.5
call keksym(xp,yp,size,1h1,0.,1,0)
call onehlf(999.,999.,size,0.,0)
call keksym(999.,999.,size,30h-layer, variable-density model,
. 0.,30,0)
call plotnd
end
Return to basepage