annotate scripts/plot/draw/ellipsoid.m @ 19016:87c3848cf3c0

Fix bug when hggroup used with primitive graphic object (bug #42532). * image.m, text.m, line.m, patch.m: __plt_get_axis_arg__ will return axis and hggroup when 'parent' property is used. Select the first returned object which is the axes, rather than passing both axis and hggroup to further plot subroutines.
author Rik <rik@octave.org>
date Tue, 10 Jun 2014 14:03:09 -0700
parents d63878346099
children 446c46af4b42
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17744
d63878346099 maint: Update copyright notices for release.
John W. Eaton <jwe@octave.org>
parents: 17572
diff changeset
1 ## Copyright (C) 2007-2013 Sylvain Pelissier
7306
e1e9bb54a440 [project @ 2007-12-12 16:47:07 by jwe]
jwe
parents: 7305
diff changeset
2 ##
e1e9bb54a440 [project @ 2007-12-12 16:47:07 by jwe]
jwe
parents: 7305
diff changeset
3 ## This file is part of Octave.
7305
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
4 ##
7306
e1e9bb54a440 [project @ 2007-12-12 16:47:07 by jwe]
jwe
parents: 7305
diff changeset
5 ## Octave is free software; you can redistribute it and/or modify it
e1e9bb54a440 [project @ 2007-12-12 16:47:07 by jwe]
jwe
parents: 7305
diff changeset
6 ## under the terms of the GNU General Public License as published by
e1e9bb54a440 [project @ 2007-12-12 16:47:07 by jwe]
jwe
parents: 7305
diff changeset
7 ## the Free Software Foundation; either version 3 of the License, or (at
e1e9bb54a440 [project @ 2007-12-12 16:47:07 by jwe]
jwe
parents: 7305
diff changeset
8 ## your option) any later version.
7305
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
9 ##
7306
e1e9bb54a440 [project @ 2007-12-12 16:47:07 by jwe]
jwe
parents: 7305
diff changeset
10 ## Octave is distributed in the hope that it will be useful, but
e1e9bb54a440 [project @ 2007-12-12 16:47:07 by jwe]
jwe
parents: 7305
diff changeset
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
e1e9bb54a440 [project @ 2007-12-12 16:47:07 by jwe]
jwe
parents: 7305
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
e1e9bb54a440 [project @ 2007-12-12 16:47:07 by jwe]
jwe
parents: 7305
diff changeset
13 ## General Public License for more details.
7305
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
14 ##
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
15 ## You should have received a copy of the GNU General Public License
7306
e1e9bb54a440 [project @ 2007-12-12 16:47:07 by jwe]
jwe
parents: 7305
diff changeset
16 ## along with Octave; see the file COPYING. If not, see
e1e9bb54a440 [project @ 2007-12-12 16:47:07 by jwe]
jwe
parents: 7305
diff changeset
17 ## <http://www.gnu.org/licenses/>.
7305
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
18
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
19 ## -*- texinfo -*-
17122
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17051
diff changeset
20 ## @deftypefn {Function File} {} ellipsoid (@var{xc}, @var{yc}, @var{zc}, @var{xr}, @var{yr}, @var{zr}, @var{n})
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17051
diff changeset
21 ## @deftypefnx {Function File} {} ellipsoid (@dots{}, @var{n})
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17051
diff changeset
22 ## @deftypefnx {Function File} {} ellipsoid (@var{hax}, @dots{})
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17051
diff changeset
23 ## @deftypefnx {Function File} {[@var{x}, @var{y}, @var{z}] =} ellipsoid (@dots{})
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17051
diff changeset
24 ## Plot a 3-D ellipsoid.
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17051
diff changeset
25 ##
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17051
diff changeset
26 ## The inputs @var{xc}, @var{yc}, @var{zc} specify the center of the ellipsoid.
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17051
diff changeset
27 ## The inputs @var{xr}, @var{yr}, @var{zr} specify the semi-major axis lengths.
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17051
diff changeset
28 ##
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17051
diff changeset
29 ## The optional input @var{n} determines the number of faces around the
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17051
diff changeset
30 ## the circumference of the cylinder. The default value is 20.
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17051
diff changeset
31 ##
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17051
diff changeset
32 ## If the first argument @var{hax} is an axes handle, then plot into this axis,
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17051
diff changeset
33 ## rather than the current axes returned by @code{gca}.
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17051
diff changeset
34 ##
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17051
diff changeset
35 ## If outputs are requested @code{ellipsoid} returns three matrices in
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17051
diff changeset
36 ## @code{meshgrid} format, such that @code{surf (@var{x}, @var{y}, @var{z})}
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17051
diff changeset
37 ## generates the ellipsoid.
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17051
diff changeset
38 ## @seealso{cylinder, rectangle, sphere}
7305
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
39 ## @end deftypefn
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
40
7306
e1e9bb54a440 [project @ 2007-12-12 16:47:07 by jwe]
jwe
parents: 7305
diff changeset
41 ## Author: Sylvain Pelissier <sylvain.pelissier@gmail.com>
e1e9bb54a440 [project @ 2007-12-12 16:47:07 by jwe]
jwe
parents: 7305
diff changeset
42
e1e9bb54a440 [project @ 2007-12-12 16:47:07 by jwe]
jwe
parents: 7305
diff changeset
43 function [xx, yy, zz] = ellipsoid (varargin)
7305
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
44
17051
3e1b24a2454a cylinder.m, ellipsoid.m, rectangle.m, sphere.m: Update to use new __plt_get_axis_arg__.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 14237
diff changeset
45 [hax, varargin, nargin] = __plt_get_axis_arg__ ("ellipsoid", varargin{:});
7305
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
46
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
47 if (nargin != 6 && nargin != 7)
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
48 print_usage ();
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
49 endif
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
50
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
51 xc = varargin{1};
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
52 yc = varargin{2};
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
53 zc = varargin{3};
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
54 xr = varargin{4};
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
55 yr = varargin{5};
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
56 zr = varargin{6};
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
57
8274
967c15c5e265 ellipsoid.m: fix default argument check
Soren Hauberg <hauberg@gmail.com>
parents: 7306
diff changeset
58 if (nargin == 6)
7305
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
59 n = 20;
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
60 else
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
61 n = varargin{7};
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
62 endif
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
63
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
64 theta = linspace (0, 2 * pi, n + 1);
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
65 phi = linspace (-pi / 2, pi / 2, n + 1);
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
66 [theta, phi] = meshgrid (theta, phi);
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
67
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
68 x = xr .* cos (phi) .* cos (theta) + xc;
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
69 y = yr .* cos (phi) .* sin (theta) + yc;
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
70 z = zr .* sin (phi) + zc;
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
71
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
72 if (nargout > 0)
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
73 xx = x;
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
74 yy = y;
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
75 zz = z;
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
76 else
17476
f0f4b524b6d0 maint: Correct indentation for several plot routines.
Rik <rik@octave.org>
parents: 17301
diff changeset
77 oldfig = [];
f0f4b524b6d0 maint: Correct indentation for several plot routines.
Rik <rik@octave.org>
parents: 17301
diff changeset
78 if (! isempty (hax))
f0f4b524b6d0 maint: Correct indentation for several plot routines.
Rik <rik@octave.org>
parents: 17301
diff changeset
79 oldfig = get (0, "currentfigure");
f0f4b524b6d0 maint: Correct indentation for several plot routines.
Rik <rik@octave.org>
parents: 17301
diff changeset
80 endif
17051
3e1b24a2454a cylinder.m, ellipsoid.m, rectangle.m, sphere.m: Update to use new __plt_get_axis_arg__.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 14237
diff changeset
81 unwind_protect
3e1b24a2454a cylinder.m, ellipsoid.m, rectangle.m, sphere.m: Update to use new __plt_get_axis_arg__.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 14237
diff changeset
82 hax = newplot (hax);
3e1b24a2454a cylinder.m, ellipsoid.m, rectangle.m, sphere.m: Update to use new __plt_get_axis_arg__.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 14237
diff changeset
83
17126
26589abbc78d Don't pass axis handle unnecessarily from high level to low level plot functions.
Rik <rik@octave.org>
parents: 17122
diff changeset
84 surf (x, y, z);
17051
3e1b24a2454a cylinder.m, ellipsoid.m, rectangle.m, sphere.m: Update to use new __plt_get_axis_arg__.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 14237
diff changeset
85 unwind_protect_cleanup
3e1b24a2454a cylinder.m, ellipsoid.m, rectangle.m, sphere.m: Update to use new __plt_get_axis_arg__.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 14237
diff changeset
86 if (! isempty (oldfig))
3e1b24a2454a cylinder.m, ellipsoid.m, rectangle.m, sphere.m: Update to use new __plt_get_axis_arg__.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 14237
diff changeset
87 set (0, "currentfigure", oldfig);
3e1b24a2454a cylinder.m, ellipsoid.m, rectangle.m, sphere.m: Update to use new __plt_get_axis_arg__.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 14237
diff changeset
88 endif
3e1b24a2454a cylinder.m, ellipsoid.m, rectangle.m, sphere.m: Update to use new __plt_get_axis_arg__.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 14237
diff changeset
89 end_unwind_protect
7305
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
90 endif
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
91
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
92 endfunction
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
93
14237
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
94
7305
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
95 %!demo
14237
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
96 %! clf;
7305
84a2e24c75c8 [project @ 2007-12-12 16:45:02 by jwe]
jwe
parents:
diff changeset
97 %! ellipsoid (0, 0, 1, 2, 3, 4, 20);
17190
df4c4b7708a4 Add titles and clean-up plotting %!demos.
Rik <rik@octave.org>
parents: 17126
diff changeset
98 %! title ('ellipsoid()');
14237
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
99