Main Page   Class Hierarchy   Data Structures   File List   Data Fields   Globals  

spline3d.f

Go to the documentation of this file.
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 c       
00020 c       A program plots a 3-dim picture
00021 c       It calls the plt3d subroutine
00022 c       a - the 2D data array, x direction increases faster.
00023 c       m,n  -  dims of x and y directions
00024 c       x and ywork - real working vector of length lwork >
00025 c          2*min(m,n)
00026 c       alt, azim - viewing altitute and azimuthal angles in
00027 c                       degrees
00028 c       xlen,ylen - length of unprojected axis in device units
00029 c       xoff,yoff - offset of plot origin in device units
00030 c       zoff - data value corresponding to height of zero unit.
00031 c       zfac - scale of z axis from data unit to unprojected
00032 c               vertical device unit
00033 c       ier - returns 0 for successful plot
00034 c
00035         integer*4 m,n,lwork,ier 
00036 c
00037         real*4  a(500000),b(50000),xwork(1000),ywork(1000)
00038 c
00039         read(1,*)m,n,etam,(a(k),k=1,(m+1)*(n+1)),(b(k),k=1,(m+1)*(n+1))
00040         m = m + 1
00041         n = n + 1
00042 c
00043         amax=0.
00044         amin=1.e6
00045         bmax=0.
00046         bmin=1.e6
00047 c
00048         do 20 k=1,m*n
00049                 aa = max(-2., min(2., a(k)))
00050                 amax = max(amax, aa)
00051                 amin = min(amin, aa)
00052                 a(k) = aa
00053 c
00054                 bb = max(-2., min(2., b(k)))
00055                 bmax = max(bmax, bb)
00056                 bmin = min(bmin, bb)
00057                 b(k) = bb
00058 10          continue
00059 20      continue
00060 c
00061 c       Rescale the data...
00062 c
00063         abar = .5*(amin+amax)
00064         afac = 1./(amax-amin)
00065         bbar = .5*(bmin+bmax)
00066         bfac = 1./(bmax-bmin)
00067 c
00068         do 110 k=1,m*n
00069             a(k) = (a(k)-abar)*afac
00070             b(k) = (b(k)-bbar)*bfac
00071 110     continue
00072 c
00073         call mcinit
00074 c
00075         lwork=2*m
00076         xlen=6.
00077         ylen=6.
00078         xoff=5.
00079         yoff=5.
00080 c
00081         zoff = 0.
00082         zfac = 6.
00083 c
00084 200     write(*,201)
00085 201     format('Choice (1 or 2), Altitute, azimuthal viewing angles: '$)
00086         read(*,*,iostat=io)i,alt,azim
00087 c
00088         if (io.eq.0) then
00089             call clear
00090             if (i.eq.1) then
00091                 call plt3d(a,m,n,xwork,ywork,lwork,alt,azim,
00092      &                     xlen,xoff,ylen,yoff,zfac,zoff,ier)
00093             else
00094                 call plt3d(b,m,n,xwork,ywork,lwork,alt,azim,
00095      &                     xlen,xoff,ylen,yoff,zfac,zoff,ier)
00096             end if
00097             go to 200
00098         end if
00099 c
00100 99999   call mcquit
00101         end

Generated at Sun Feb 24 09:57:17 2002 for STARLAB by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001