annotate scripts/plot/ellipsoid.m @ 7305:84a2e24c75c8

[project @ 2007-12-12 16:45:02 by jwe]
author jwe
date Wed, 12 Dec 2007 16:45:02 +0000
parents
children e1e9bb54a440
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7305
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
1 ## Copyright (C) 2007 Sylvain Pelissier <sylvain.pelissier@gmail.com>
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
2 ##
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
3 ## This program is free software; you can redistribute it and/or modify
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
4 ## it under the terms of the GNU General Public License as published by
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
5 ## the Free Software Foundation; either version 2 of the License, or
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
6 ## (at your option) any later version.
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
7 ##
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
8 ## This program is distributed in the hope that it will be useful,
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
9 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
10 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
11 ## GNU General Public License for more details.
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
12 ##
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
13 ## You should have received a copy of the GNU General Public License
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
14 ## along with this program; if not, write to the Free Software
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
15 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
16
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
17 ## -*- texinfo -*-
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
18 ## @deftypefn {Function File} {[@var{x}, @var{y}, @var{z}] =} ellipsoid (@var{xc},@var{yc}, @var{zc}, @var{xr}, @var{yr}, @var{zr}, @var{n})
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
19 ## @deftypefnx {Function File} {} ellipsoid (@var{h}, @dots{})
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
20 ## Generates three matrices in @code{meshgrid} format, of an ellipsoid.
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
21 ## Called with no return arguments, @code{ellipsoid} calls directly
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
22 ## @code{surf (@var{x}, @var{y}, @var{z})}. If an axes handle is passed
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
23 ## as the first argument, the the surface is plotted to this set of axes.
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
24 ## @seealso{sphere}
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
25 ## @end deftypefn
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
26
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
27 function [xx, yy, zz] = ellipsoid(varargin)
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
28
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
29 [h, varargin, nargin] = __plt_get_axis_arg__ ((nargout > 0), "ellipsoid",
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
30 varargin{:});
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
31
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
32 if (nargin != 6 && nargin != 7)
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
33 print_usage ();
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
34 endif
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
35
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
36 xc = varargin{1};
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
37 yc = varargin{2};
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
38 zc = varargin{3};
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
39 xr = varargin{4};
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
40 yr = varargin{5};
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
41 zr = varargin{6};
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
42
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
43 if (nargin == 5)
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
44 n = 20;
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
45 else
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
46 n = varargin{7};
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
47 endif
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
48
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
49 theta = linspace (0, 2 * pi, n + 1);
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
50 phi = linspace (-pi / 2, pi / 2, n + 1);
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
51 [theta, phi] = meshgrid (theta, phi);
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
52
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
53 x = xr .* cos (phi) .* cos (theta) + xc;
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
54 y = yr .* cos (phi) .* sin (theta) + yc;
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
55 z = zr .* sin (phi) + zc;
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
56
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
57 if (nargout > 0)
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
58 xx = x;
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
59 yy = y;
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
60 zz = z;
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
61 else
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
62 surf (h, x, y, z);
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
63 endif
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
64
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
65 endfunction
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
66
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
67 %!demo
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
68 %! ellipsoid (0, 0, 1, 2, 3, 4, 20);