comparison scripts/plot/surface.m @ 7207:71c03c7239fb

[project @ 2007-11-28 02:19:25 by jwe]
author jwe
date Wed, 28 Nov 2007 02:20:48 +0000
parents b48a21816f2e
children a730e47fda4d
comparison
equal deleted inserted replaced
7206:6e4ceeeb1940 7207:71c03c7239fb
39 39
40 ## Author: jwe 40 ## Author: jwe
41 41
42 function h = surface (varargin) 42 function h = surface (varargin)
43 43
44 ax = gca (); 44 if (isscalar (varargin{1}) && ishandle (varargin{1}))
45 h = varargin {1};
46 if (! strcmp (get (h, "type"), "axes"))
47 error ("surface: expecting first argument to be an axes object");
48 endif
49 oldh = gca ();
50 unwind_protect
51 axes (h);
52 [tmp, bad_usage] = __surface__ (h, varargin{2:end});
53 unwind_protect_cleanup
54 axes (oldh);
55 end_unwind_protect
56 else
57 [tmp, bad_usage] = __surface__ (gca (), varargin{:});
58 endif
45 59
46 firststring = nargin + 1; 60 if (bad_usage)
47 for i = 1 : nargin 61 print_usage ();
48 if (ischar (varargin {i})) 62 endif
49 firststring = i; 63
64 if (nargout > 0)
65 h = tmp;
66 endif
67 endfunction
68
69 function [h, bad_usage] = __surface__ (ax, varargin)
70
71 bad_usage = false;
72 h = 0;
73 firststring = nargin;
74 for i = 2 : nargin
75 if (ischar (varargin {i - 1}))
76 firststring = i - 1;
50 break; 77 break;
51 endif 78 endif
52 endfor 79 endfor
53 80
54
55 if (firststring > 5) 81 if (firststring > 5)
56 print_usage (); 82 bad_usage = true;
57 elseif (firststring == 5) 83 elseif (firststring == 5)
58 x = varargin{1}; 84 x = varargin{1};
59 y = varargin{2}; 85 y = varargin{2};
60 z = varargin{3}; 86 z = varargin{3};
61 c = varargin{4}; 87 c = varargin{4};
115 y = (1:nr)'; 141 y = (1:nr)';
116 else 142 else
117 error ("surface: argument must be a matrix"); 143 error ("surface: argument must be a matrix");
118 endif 144 endif
119 else 145 else
120 print_usage (); 146 bad_usage = true;
121 endif 147 endif
122 148
123 ## Make a default surface object. 149 if (! bad_usage)
124 tmp = __go_surface__ (ax, "xdata", x, "ydata", y, "zdata", z, "cdata", c); 150 ## Make a default surface object.
125 set (tmp, "facecolor","flat"); 151 h = __go_surface__ (ax, "xdata", x, "ydata", y, "zdata", z, "cdata", c);
126 if (firststring <= nargin) 152 set (h, "facecolor","flat");
127 set (tmp, varargin {firststring:end}); 153 if (firststring < nargin)
128 endif 154 set (h, varargin {firststring:end});
155 endif
129 156
130 if (! ishold ()) 157 if (! ishold ())
131 set (ax, "view", [0, 90], "box", "off", "xgrid", "on", 158 set (ax, "view", [0, 90], "box", "off", "xgrid", "on",
132 "ygrid", "on", "zgrid", "on"); 159 "ygrid", "on", "zgrid", "on");
133 endif 160 endif
134 161 endif
135 if (nargout > 0)
136 h = tmp;
137 endif
138 162
139 endfunction 163 endfunction