Mercurial > hg > octave-nkf
comparison scripts/plot/surfc.m @ 7118:d32f867e4dda
[project @ 2007-11-07 20:44:11 by jwe]
author | jwe |
---|---|
date | Wed, 07 Nov 2007 20:44:29 +0000 |
parents | |
children | c7e5e638a8d0 |
comparison
equal
deleted
inserted
replaced
7117:373c39904877 | 7118:d32f867e4dda |
---|---|
1 ## Copyright (C) 1996, 1997, 2007 John W. Eaton | |
2 ## | |
3 ## This file is part of Octave. | |
4 ## | |
5 ## Octave is free software; you can redistribute it and/or modify it | |
6 ## under the terms of the GNU General Public License as published by | |
7 ## the Free Software Foundation; either version 3 of the License, or (at | |
8 ## your option) any later version. | |
9 ## | |
10 ## Octave is distributed in the hope that it will be useful, but | |
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 ## General Public License for more details. | |
14 ## | |
15 ## You should have received a copy of the GNU General Public License | |
16 ## along with Octave; see the file COPYING. If not, see | |
17 ## <http://www.gnu.org/licenses/>. | |
18 | |
19 ## -*- texinfo -*- | |
20 ## @deftypefn {Function File} {} surfc (@var{x}, @var{y}, @var{z}) | |
21 ## Plot a surface and contour given matrices @var{x}, and @var{y} from | |
22 ## @code{meshgrid} and a matrix @var{z} corresponding to the @var{x} and | |
23 ## @var{y} coordinates of the mesh. If @var{x} and @var{y} are vectors, | |
24 ## then a typical vertex is (@var{x}(j), @var{y}(i), @var{z}(i,j)). Thus, | |
25 ## columns of @var{z} correspond to different @var{x} values and rows of | |
26 ## @var{z} correspond to different @var{y} values. | |
27 ## @seealso{meshgrid, surf, contour} | |
28 ## @end deftypefn | |
29 | |
30 function h = surfc (varargin) | |
31 | |
32 newplot (); | |
33 | |
34 tmp = surface (varargin{:}); | |
35 | |
36 ax = get (tmp, "parent"); | |
37 | |
38 set (tmp, "facecolor", "flat"); | |
39 | |
40 set (ax, "view", [-37.5, 30]); | |
41 | |
42 hold on; | |
43 | |
44 [c, lev] = contourc (varargin{:}); | |
45 | |
46 cmap = get (gcf(), "colormap"); | |
47 | |
48 levx = linspace (min (lev), max (lev), size (cmap, 1)); | |
49 | |
50 drawnow(); | |
51 ax = axis(); | |
52 zmin = 2 * ax(5) - ax(6); | |
53 | |
54 ## decode contourc output format | |
55 i1 = 1; | |
56 while (i1 < length (c)) | |
57 | |
58 clev = c(1,i1); | |
59 clen = c(2,i1); | |
60 | |
61 ccr = interp1 (levx, cmap(:,1), clev); | |
62 ccg = interp1 (levx, cmap(:,2), clev); | |
63 ccb = interp1 (levx, cmap(:,3), clev); | |
64 | |
65 ii = i1+1:i1+clen; | |
66 line (c(1,ii), c(2,ii), zmin*ones(size(ii)), "color", [ccr, ccg, ccb]); | |
67 | |
68 i1 += c(2,i1)+1; | |
69 endwhile | |
70 | |
71 if (nargout > 0) | |
72 h = tmp; | |
73 endif | |
74 endfunction |