00001 00002 c 00003 c Copyright (c) 1986,1987,1988,1989,1990,1991,1992,1993, 00004 c by Steve McMillan, Drexel University, Philadelphia, PA. 00005 c 00006 c All rights reserved. 00007 c 00008 c Redistribution and use in source and binary forms are permitted 00009 c provided that the above copyright notice and this paragraph are 00010 c duplicated in all such forms and that any documentation, 00011 c advertising materials, and other materials related to such 00012 c distribution and use acknowledge that the software was developed 00013 c by the author named above. 00014 c 00015 c THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 00016 c IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 00017 c WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 00018 c 00019 program test3d 00020 c 00021 c A program to plot a 3-D picture, using the plt3d subroutine. 00022 c 00023 c a - the 2D data arrary, x direction increases faster. 00024 c m,n - dimensionss of x and y directions 00025 c alt, azim - viewing altitute and azimuthal angles in 00026 c degrees 00027 c xlen,ylen - length of unprojected axis in device units 00028 c xoff,yoff - offset of plot origin in device units 00029 c zoff - data value corresponding to height of zero unit. 00030 c zfac - scale of z axis from data unit to unprojected 00031 c vertical device unit 00032 c ier - returns 0 for successful plot 00033 c 00034 integer*4 m,n,ier 00035 parameter (m = 50, n = 75) 00036 real*4 a(m,n),alt,azim,xlen,xoff,ylen,yoff,zfac,zoff 00037 c 00038 amax=0. 00039 amin=1.e30 00040 c 00041 do 5 j=1,n 00042 y = float(j)/n 00043 do 1 i=1,m 00044 x = float(i)/m 00045 c 00046 a(i,j) = x*y*sin(12.56*y) 00047 c 00048 amax = max(amax,a(i,j)) 00049 amin = min(amin,a(i,j)) 00050 1 continue 00051 5 continue 00052 c 00053 call mcinit 00054 c 00055 xlen=6. 00056 ylen=6. 00057 xoff=5. 00058 yoff=5. 00059 zfac=7./(amax-amin) 00060 zoff=.5*(amin+amax) 00061 c 00062 2 write(*,'(''Altitute, azimuthal viewing angles: ''$)') 00063 read(*,*,err=99999,end=99999)alt,azim 00064 call clear 00065 c 00066 call plt3d(a,m,n,alt,azim,xlen,xoff,ylen,yoff,zfac,zoff,ier) 00067 if (ier.ne.0) write(6,*)'Return status = ',ier 00068 c 00069 call simbol(xplot3d(float(m+1),-1.,0.), 00070 & yplot3d(float(m+1),-1.,0.), 00071 & .225,'X',0.,1) 00072 call simbol(xplot3d(-1.,float(n+1),0.), 00073 & yplot3d(-1.,float(n+1),0.), 00074 & .225,'Y',0.,1) 00075 c 00076 go to 2 00077 c 00078 99999 call mcquit 00079 end