changeset 7305:84a2e24c75c8

[project @ 2007-12-12 16:45:02 by jwe]
author jwe
date Wed, 12 Dec 2007 16:45:02 +0000
parents ad066356989b
children e1e9bb54a440
files scripts/ChangeLog scripts/plot/Makefile.in scripts/plot/ellipsoid.m
diffstat 3 files changed, 74 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/ChangeLog	Wed Dec 12 16:41:09 2007 +0000
+++ b/scripts/ChangeLog	Wed Dec 12 16:45:02 2007 +0000
@@ -1,3 +1,8 @@
+2007-12-12  David Bateman  <dbateman@free.fr>
+
+	* plot/ellipsoid.m: Port from octave-forge, editing for style.
+	* plot/Makefile.in (SOURCES): Add to the sources.
+
 2007-12-11  John W. Eaton  <jwe@octave.org>
 
 	* plot/surf.m: Set xgrid, ygrid, and zgrid on here.
--- a/scripts/plot/Makefile.in	Wed Dec 12 16:41:09 2007 +0000
+++ b/scripts/plot/Makefile.in	Wed Dec 12 16:45:02 2007 +0000
@@ -84,6 +84,7 @@
   contourf.m \
   cylinder.m \
   drawnow.m \
+  ellipsoid.m \
   errorbar.m \
   figure.m \
   fill.m \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/plot/ellipsoid.m	Wed Dec 12 16:45:02 2007 +0000
@@ -0,0 +1,68 @@
+## Copyright (C) 2007   Sylvain Pelissier   <sylvain.pelissier@gmail.com>
+##
+## 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+## -*- texinfo -*-
+## @deftypefn {Function File} {[@var{x}, @var{y}, @var{z}] =} ellipsoid (@var{xc},@var{yc}, @var{zc}, @var{xr}, @var{yr}, @var{zr}, @var{n})
+## @deftypefnx {Function File} {} ellipsoid (@var{h}, @dots{})
+## Generates three matrices in @code{meshgrid} format, of an ellipsoid.
+## Called with no return arguments, @code{ellipsoid} calls 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{sphere}
+## @end deftypefn
+
+function [xx, yy, zz] = ellipsoid(varargin)
+
+  [h, varargin, nargin] = __plt_get_axis_arg__ ((nargout > 0), "ellipsoid", 
+						varargin{:});
+
+  if (nargin != 6 && nargin != 7)
+    print_usage ();
+  endif
+
+  xc = varargin{1};
+  yc = varargin{2};
+  zc = varargin{3};
+  xr = varargin{4};
+  yr = varargin{5};
+  zr = varargin{6};
+
+  if (nargin == 5)
+    n = 20;
+  else
+    n = varargin{7};
+  endif
+
+  theta = linspace (0, 2 * pi, n + 1);
+  phi = linspace (-pi / 2, pi / 2, n + 1);
+  [theta, phi] = meshgrid (theta, phi);
+
+  x = xr .* cos (phi) .* cos (theta) + xc;
+  y = yr .* cos (phi) .* sin (theta) + yc;
+  z = zr .* sin (phi) + zc;
+
+  if (nargout > 0)
+    xx = x;
+    yy = y;
+    zz = z;
+  else
+    surf (h, x, y, z);
+  endif
+
+endfunction
+
+%!demo
+%! ellipsoid (0, 0, 1, 2, 3, 4, 20);