octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Port sphere.m form jhandles to Octave


From: David Bateman
Subject: Port sphere.m form jhandles to Octave
Date: Tue, 20 Nov 2007 17:42:25 +0100
User-agent: Thunderbird 1.5.0.7 (X11/20060921)

Attached is the jhandles sphere function with a texinfo help string and
changes to allow it to accept an axes handle as the first argument. This
is a matlab core function and so should be in Octave.. This needs the
"depthorder" patch I sent earlier today to work correctly with gnuplot.

D.

-- 
David Bateman                                address@hidden
Motorola Labs - Paris                        +33 1 69 35 48 04 (Ph) 
Parc Les Algorithmes, Commune de St Aubin    +33 6 72 01 06 33 (Mob) 
91193 Gif-Sur-Yvette FRANCE                  +33 1 69 35 77 01 (Fax) 

The information contained in this communication has been classified as: 

[x] General Business Information 
[ ] Motorola Internal Use Only 
[ ] Motorola Confidential Proprietary

*** ./scripts/plot/sphere.m.orig19      2007-11-20 17:05:40.937101286 +0100
--- ./scripts/plot/sphere.m     2007-11-20 17:02:13.238795574 +0100
***************
*** 0 ****
--- 1,77 ----
+ ## Copyright (C) 2007 Michael Goffioul
+ ##
+ ## This program is free software; you can redistribute it and/or modify
+ ## it under the terms of the GNU General Public License as published by
+ ## the Free Software Foundation; either version 2 of the License, or
+ ## (at your option) any later version.
+ ##
+ ## This program is distributed in the hope that it will be useful,
+ ## but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ ## GNU General Public License for more details.
+ ##
+ ## You should have received a copy of the GNU General Public License
+ ## along with this program; if not, write to the Free Software
+ ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ ## 02110-1301  USA
+ 
+ ## -*- texinfo -*-
+ ## @deftypefn {Function File} address@hidden, @var{y}, @var{z}] =} sphere 
(@var{n})
+ ## @deftypefnx {Function File} {} sphere (@var{h}, @dots{})
+ ## Generates three matrices in @code{meshgrid} format, such that 
+ ## @code{surf (@var{x}, @var{y}, @var{z})} generates a unit sphere. 
+ ## The matrices of @address@hidden@address@hidden If @var{n} is 
+ ## omitted then a default value of 20 is assumed.
+ ##
+ ## Called with no return arguments, @code{sphere} call directly 
+ ## @code{surf (@var{x}, @var{y}, @var{z})}. If an axes handle is passed
+ ## as the first argument, the the surface is plotted to this set of axes.
+ ## @seealso{peaks}
+ ## @end deftypefn
+ 
+ function [xx,yy,zz] = sphere (h, n)
+ 
+   have_h = false;
+   if (nargin > 1 && isscalar (h) && ishandle (h))
+     if (! strcmp (get (h, "type"), "axes"))
+       error ("sphere: expecting first argument to be an axes object");
+     endif
+     if (nargin == 1)
+       n = 20;
+     endif
+     have_h = true;
+   else
+     if (nargin == 1)
+       n = h;
+     else
+       n = 20;
+     endif
+   endif
+ 
+   theta = linspace (0, 2*pi, n+1);
+   phi = linspace (-pi/2, pi/2, n+1);
+   [theta,phi] = meshgrid (theta, phi);
+ 
+   x = cos(phi).*cos(theta);
+   y = cos(phi).*sin(theta);
+   z = sin(phi);
+ 
+   if (nargout > 0)
+     xx = x;
+     yy = y;
+     zz = z;
+   else
+     if (have_h)
+       oldh = gca ();
+       unwind_protect
+       axes (h);
+       surf (x, y, z);
+       unwind_protect_cleanup
+       axes (oldh);
+       end_unwind_protect
+     else
+       surf (x, y, z);
+     endif
+   endif
+ 
+ endfunction
*** ./scripts/plot/Makefile.in.orig19   2007-11-20 17:05:47.273774974 +0100
--- ./scripts/plot/Makefile.in  2007-11-20 17:06:10.566575474 +0100
***************
*** 123,128 ****
--- 123,129 ----
    shading.m \
    shg.m \
    sombrero.m \
+   sphere.m \
    spinmap.m \
    stairs.m \
    stem.m \
2007-11-20  David Bateman  <address@hidden>

        * plot/sphere.m: New function
        * plot/Makefile.in (SOURCES): Add it to the sources.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]