diff scripts/plot/surfnorm.m @ 7215:dd88d61d443f

[project @ 2007-11-29 16:44:45 by jwe]
author jwe
date Thu, 29 Nov 2007 16:46:40 +0000
parents a730e47fda4d
children 5389a52df87b
line wrap: on
line diff
--- a/scripts/plot/surfnorm.m
+++ b/scripts/plot/surfnorm.m
@@ -49,40 +49,16 @@
 ## @seealso{surf, quiver3}
 ## @end deftypefn
 
-function varargout = surfnorm (varargin)
+function [Nx, Ny, Nz] = surfnorm (varargin)
 
-  if (nargout > 0)
-    varargout = cell (nargout, 1);
-  else
-    varargout = cell (0, 0);
-  endif
-  if (isscalar (varargin{1}) && ishandle (varargin{1}))
-    h = varargin{1};
-    if (! strcmp (get (h, "type"), "axes"))
-      error ("surfnorm: expecting first argument to be an axes object");
-    endif
-    if (nargin != 2 && nargin != 4)
-      print_usage ();
-    endif
-    oldh = gca ();
-    unwind_protect
-      axes (h);
-      [varargout{:}] = __surfnorm__ (h, varargin{2:end});
-    unwind_protect_cleanup
-      axes (oldh);
-    end_unwind_protect
-  else
-    if (nargin != 1 && nargin != 3)
-      print_usage ();
-    endif
-    [varargout{:}] = __surfnorm__ (gca (), varargin{:});
+  [h, varargin, nargin] = __plt_get_axis_arg__ ((nargout != 0), "surfnorm", 
+						varargin{:});
+
+  if (nargin != 1 && nargin != 3)
+    print_usage ();
   endif
 
-endfunction
-
-function [Nx, Ny, Nz] = __surfnorm__ (h, varargin)
-
-  if (nargin == 2)
+  if (nargin == 1)
     z = varargin{1};
     [x, y] = meshgrid (1:size(z,1), 1:size(z,2));
     ioff = 2;
@@ -94,9 +70,6 @@
   endif
 
   if (nargout == 0)
-    newplot ();
-    surf (x, y, z, varargin{ioff:end});
-    hold on;
   endif
 
   ## Make life easier, and avoid having to do the extrapolation later, do
@@ -136,10 +109,19 @@
   nz = nz ./ len;
 
   if (nargout == 0)
-    plot3 ([x(:)'; x(:).' + nx(:).' ; NaN(size(x(:).'))](:),
-	   [y(:)'; y(:).' + ny(:).' ; NaN(size(y(:).'))](:),
-	   [z(:)'; z(:).' + nz(:).' ; NaN(size(z(:).'))](:), 
-	   varargin{ioff:end});
+    oldh = gca ();
+    unwind_protect
+      axes (h);
+      newplot ();
+      surf (x, y, z, varargin{ioff:end});
+      hold on;
+      plot3 ([x(:)'; x(:).' + nx(:).' ; NaN(size(x(:).'))](:),
+	     [y(:)'; y(:).' + ny(:).' ; NaN(size(y(:).'))](:),
+	     [z(:)'; z(:).' + nz(:).' ; NaN(size(z(:).'))](:), 
+	     varargin{ioff:end});
+    unwind_protect_cleanup
+      axes (oldh);
+    end_unwind_protect
   else
     Nx = nx;
     Ny = ny;