Previous: consy Up: ../plot79_c.html Next: contfe
SUBROUTINE CONTCP (XD, YD, ZD, ND, C, NC, WK, MAXWK, IWK,
X MAXIWK, MODE, IERROR, PL2)
C$ (ALG626 - Contour Plot)
C$ Plot contours of a function defined on an irregular grid
C$ without actually generating a uniform grid. The arguments
C$ are:
C$
C$ XD(*),YD(*),
C$ ZD(*)..........Coordinates of data points. XD and YD must
C$ be given in world units for the current plot
C$ window.
C$
C$ ND.............Number of data points.
C$
C$ C(*)...........Contour levels.
C$
C$ NC.............Number of contour levels.
C$
C$ WK(*)..........REAL work array, dimension 5*ND. On exit,
C$ WK(*) contains the partial derivatives
C$ (ZX(I), ZY(I), ZXX(I), ZXY(I), ZYY(I), I=1,
C$ ND).
C$
C$ MAXWK..........Actual declared dimension of WK(*).
C$
C$ IWK(*).........INTEGER work array. For MODE = 0, the
C$ dimension is 31*ND. For other modes, see
C$ below.
C$
C$ On exit, IWK(*) contains:
C$
C$ (a) IWK(1) = NT = number of triangles
C$
C$ (b) IWK(2...3*NT+1) point numbers for the
C$ triangles. The first 3 numbers determine
C$ the vertices of the first triangle, the next
C$ 3 for the second and so on. the numbers
C$ correspond to the indices of the XD(*),
C$ YD(*), ZD(*) arrays. They are arranged
C$ counter-clockwise within a triangle.
C$
C$ (c) IWK(3*NT+2 ... 3*NT+NCP*ND+1)
C$ A list of NCP*ND point numbers, representing
C$ NCP points for each data point that are the
C$ closest to this point. The first NCP numbers
C$ are for the first data point, the next NCP
C$ for the second and so on. These numbers were
C$ used for the computation of the partial
C$ derivatives. NCP is an installation
C$ parameter and will be set to 4.
C$
C$ MAXIWK.........Actual declared dimension of IWK(*).
C$
C$ MODE...........Mode of usage:
C$ 0 - Normal mode, see above.
C$ 1 - No triangulation requested. IWK(*) must
C$ contain the information about the
C$ triangles as described under (a) and (b)
C$ on entry. These locations of IWK(*)
C$ will not be changed and in addition, the
C$ information described under (c) will be
C$ available on exit.
C$ 2 - No triangulation and no determination of
C$ the NCP closest points for each data
C$ point. IWK(*) must contain the
C$ information as described under (a), (b),
C$ and (c) as input information. The
C$ contents of IWK(*) will not be changed.
C$ 3 - No triangulation and no computation of
C$ the partial derivatives. IWK(*) must
C$ contain the information (a) and (b) and
C$ WK(*) must contain the partial
C$ derivatives (ZX(I), ZY(I), ZXX(I),
C$ ZXY(I), ZYY(I), I=1, ND) on entry. The
C$ contents of WK(*) and IWK(*) will not be
C$ changed. This mode is especially useful
C$ when TRICP is called again after a
C$ previous call. For instance, only the
C$ contour levels may have changed. When
C$ designing a surface, it may be
C$ appropriate to change the XD, YD, ZD
C$ parameters and the partial derivatives
C$ interactively and to call TRICP again
C$ using this mode.
C$
C$ For modes 1, 2, and 3 the dimension of
C$ IWK(*) can be reduced to 3*NT + NCP*ND + 1.
C$
C$ IERROR.........Error flag set on return. IERROR = 0
C$ indicates success, and a non-zero value,
C$ failure in the triangulation. In the latter
C$ case, a message will already have been
C$ printed.
C$
C$ PL2............2-D pen movement routine, usually PL2CA.
C$
C$ The fitting method is a slightly modified version of H.
C$ Akima's ACM Algorithm 526 (routines FITVCM, FITVPD, FITVTA,
C$ and FITVXC), and corresponds to demonstration program
C$ TPDEM1 in Preusser's ACM Algorithm 626. The references to
C$ these algorithms are as follows:
C$
C$ Hiroshi Akima, "A Method for Bivariate Interpolation and
C$ Smooth Surface Fitting for Irregularly Distributed Data
C$ Points", ACM Trans. Math. Software 4, No. 2, 148-159 (June
C$ 1978).
C$
C$ Hiroshi Akima, "Algorithm 526: Bivariate Interpolation and
C$ Smooth Surface Fitting for Irregularly Distributed Data
C$ Points (E1)", ACM Trans. Math. Software 4, No. 2, 160-164
C$ (June 1978).
C$
C$ Hiroshi Akima, "Remark on Algorithm 526", ACM Trans. Math.
C$ Software 5, No. 2, 242-243 (June 1979).
C$
C$ Albrecht Preusser, "Remark on Algorithm 526", ACM Trans.
C$ Math. Software 11, No. 2, 187-187 (June 1985).
C$
C$ Albrect Preusser, "ACM Algorithm 626. TRICP -- A Contour
C$ Plot Program for Triangular Meshes", ACM Trans. Math.
C$ Software, Vol. 10, No. 4, 473-475, (December 1984).
C$
C$ Because all requested contours are traced in order in one
C$ triangle at a time, discontinuities in the contours at
C$ triangle edges may be evident on pen plotters, or if a
C$ dashed linestyle is in effect.
C$ (29-AUG-85)