annotate main/plot/meshc.m @ 0:6b33357c7561 octave-forge

Initial revision
author pkienzle
date Wed, 10 Oct 2001 19:54:49 +0000
parents
children 2ac2777b30bc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
1 ## Copyright (C) 1996, 1997 John W. Eaton
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
2 ##
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
3 ## This program is free software; you can redistribute it and/or modify
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
4 ## it under the terms of the GNU General Public License as published by
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
5 ## the Free Software Foundation; either version 2, or (at your option)
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
6 ## any later version.
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
7 ##
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
8 ## This program is distributed in the hope that it will be useful, but
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
9 ## WITHOUT ANY WARRANTY; without even the implied warranty of
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
10 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
11 ## General Public License for more details.
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
12 ##
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
13 ## You should have received a copy of the GNU General Public License
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
14 ## along with this program; see the file COPYING. If not, write to the
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
15 ## Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
16 ## 02111-1307, USA.
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
17
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
18 ## -*- texinfo -*-
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
19 ## @deftypefn {Function File} {} meshc (@var{x}, @var{y}, @var{z})
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
20 ## Plot a mesh given matrices @var{x}, and @var{y} from @code{meshdom} and
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
21 ## a matrix @var{z} corresponding to the @var{x} and @var{y} coordinates of
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
22 ## the mesh. If @var{x} and @var{y} are vectors, then a typical vertex
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
23 ## is (@var{x}(j), @var{y}(i), @var{z}(i,j)). Thus, columns of @var{z}
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
24 ## correspond to different @var{x} values and rows of @var{z} correspond
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
25 ## to different @var{y} values.
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
26 ## @end deftypefn
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
27 ## @seealso{plot, semilogx, semilogy, loglog, polar, meshgrid, meshdom,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
28 ## contour, bar, stairs, gplot, gsplot, replot, xlabel, ylabel, and title}
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
29
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
30 ## Author: jwe
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
31 ## Modified: 2000-11-17 Paul Kienzle <kienzle.powernet.co.uk>
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
32 ## copied from Octave 2.1.31 mesh.m, with contours turned on
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
33 ## if added to octave, make __mesh__.m which takes the usual paramters
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
34 ## in addition to 'surface' and 'contour' so that this code gets reused.
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
35
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
36 function meshc (x, y, z)
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
37
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
38 ## XXX FIXME XXX -- the plot states should really just be set
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
39 ## temporarily, probably inside an unwind_protect block, but there is
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
40 ## no way to determine their current values.
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
41
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
42 if (nargin == 1)
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
43 z = x;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
44 if (is_matrix (z))
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
45 gset hidden3d;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
46 gset data style lines;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
47 gset surface;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
48 gset contour;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
49 gset noparametric;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
50 gset view 60, 30, 1, 1
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
51 gsplot (z');
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
52 else
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
53 error ("mesh: argument must be a matrix");
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
54 endif
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
55 elseif (nargin == 3)
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
56 if (is_vector (x) && is_vector (y) && is_matrix (z))
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
57 xlen = length (x);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
58 ylen = length (y);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
59 if (xlen == columns (z) && ylen == rows (z))
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
60 if (rows (y) == 1)
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
61 y = y';
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
62 endif
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
63 len = 3 * xlen;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
64 zz = zeros (ylen, len);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
65 k = 1;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
66 for i = 1:3:len
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
67 zz(:,i) = x(k) * ones (ylen, 1);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
68 zz(:,i+1) = y;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
69 zz(:,i+2) = z(:,k);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
70 k++;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
71 endfor
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
72 gset hidden3d;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
73 gset data style lines;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
74 gset surface;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
75 gset contour;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
76 gset parametric;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
77 gset view 60, 30, 1, 1
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
78 gsplot (zz);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
79 gset noparametric;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
80 else
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
81 msg = "mesh: rows (z) must be the same as length (y) and";
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
82 msg = sprintf ("%s\ncolumns (z) must be the same as length (x)", msg);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
83 error (msg);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
84 endif
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
85 elseif (is_matrix (x) && is_matrix (y) && is_matrix (z))
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
86 xlen = columns (z);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
87 ylen = rows (z);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
88 if (xlen == columns (x) && xlen == columns (y) &&
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
89 ylen == rows (x) && ylen == rows(y))
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
90 len = 3 * xlen;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
91 zz = zeros (ylen, len);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
92 k = 1;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
93 for i = 1:3:len
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
94 zz(:,i) = x(:,k);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
95 zz(:,i+1) = y(:,k);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
96 zz(:,i+2) = z(:,k);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
97 k++;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
98 endfor
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
99 gset hidden3d;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
100 gset data style lines;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
101 gset surface;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
102 gset contour;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
103 gset parametric;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
104 gset view 60, 30, 1, 1
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
105 gsplot (zz);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
106 gset noparametric;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
107 else
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
108 error ("mesh: x, y, and z must have same dimensions");
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
109 endif
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
110 else
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
111 error ("mesh: x and y must be vectors and z must be a matrix");
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
112 endif
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
113 else
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
114 usage ("mesh (z)");
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
115 endif
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
116
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
117 endfunction