annotate scripts/plot/draw/comet3.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 4197fc428c7d
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) 2010-2013 Ben Abbott and John W. Eaton
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
2 ##
11382
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
3 ## This file is part of Octave.
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
4 ##
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
5 ## Octave is free software; you can redistribute it and/or modify it
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
6 ## under the terms of the GNU General Public License as published by
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
7 ## the Free Software Foundation; either version 3 of the License, or (at
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
8 ## your option) any later version.
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
9 ##
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
10 ## Octave is distributed in the hope that it will be useful, but
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
13 ## General Public License for more details.
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
14 ##
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
15 ## You should have received a copy of the GNU General Public License
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
16 ## along with Octave; see the file COPYING. If not, see
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
17 ## <http://www.gnu.org/licenses/>.
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
18
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
19 ## -*- texinfo -*-
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
20 ## @deftypefn {Function File} {} comet3 (@var{z})
16814
64e7bb01fce2 doc: Improve documentation for 2-D plot functions
Rik <rik@octave.org>
parents: 14868
diff changeset
21 ## @deftypefnx {Function File} {} comet3 (@var{x}, @var{y}, @var{z})
11382
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
22 ## @deftypefnx {Function File} {} comet3 (@var{x}, @var{y}, @var{z}, @var{p})
16814
64e7bb01fce2 doc: Improve documentation for 2-D plot functions
Rik <rik@octave.org>
parents: 14868
diff changeset
23 ## @deftypefnx {Function File} {} comet3 (@var{hax}, @dots{})
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
24 ## Produce a simple comet style animation along the trajectory provided by
16814
64e7bb01fce2 doc: Improve documentation for 2-D plot functions
Rik <rik@octave.org>
parents: 14868
diff changeset
25 ## the input coordinate vectors (@var{x}, @var{y}, @var{z}). If only @var{z}
64e7bb01fce2 doc: Improve documentation for 2-D plot functions
Rik <rik@octave.org>
parents: 14868
diff changeset
26 ## is specified then @var{x}, @var{y} default to the indices of @var{z}.
11382
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
27 ##
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
28 ## The speed of the comet may be controlled by @var{p}, which represents the
16826
a4969508008e doc: Periodic spellcheck of the documentation.
Rik <rik@octave.org>
parents: 16814
diff changeset
29 ## time each point is displayed before moving to the next one. The default for
16814
64e7bb01fce2 doc: Improve documentation for 2-D plot functions
Rik <rik@octave.org>
parents: 14868
diff changeset
30 ## @var{p} is 0.1 seconds.
11382
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
31 ##
17122
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17060
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: 17060
diff changeset
33 ## rather than the current axes returned by @code{gca}.
16814
64e7bb01fce2 doc: Improve documentation for 2-D plot functions
Rik <rik@octave.org>
parents: 14868
diff changeset
34 ## @seealso{comet}
11382
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
35 ## @end deftypefn
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
36
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
37 ## Author: jwe
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
38 ## Created: 2010-12-17
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
39
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
40 function comet3 (varargin)
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
41
17060
2d17dbdf6b7d comet.m, comet3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16826
diff changeset
42 [hax, varargin, nargin] = __plt_get_axis_arg__ ("comet3", varargin{:});
11382
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
43
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
44 if (nargin == 0 || nargin == 2 || nargin > 4)
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
45 print_usage ();
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
46 elseif (nargin == 1)
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
47 z = varargin{1};
14868
5d3a684236b0 maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents: 14363
diff changeset
48 x = y = 1:numel (z);
11382
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
49 p = 0.1;
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
50 elseif (nargin == 3)
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
51 x = varargin{1};
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
52 y = varargin{2};
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
53 z = varargin{3};
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
54 p = 0.1;
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
55 elseif (nargin == 4)
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
56 x = varargin{1};
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
57 y = varargin{2};
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
58 z = varargin{3};
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
59 p = varargin{4};
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
60 endif
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
61
17211
87ba70043bfc Don't use ifelse in plot fcns to avoid unnecessary fcn evaluations.
Rik <rik@octave.org>
parents: 17190
diff changeset
62 oldfig = [];
17301
68bcac3c043a Correct inversion accidentally introduced in cset 87ba70043bfc.
Rik <rik@octave.org>
parents: 17211
diff changeset
63 if (! isempty (hax))
17211
87ba70043bfc Don't use ifelse in plot fcns to avoid unnecessary fcn evaluations.
Rik <rik@octave.org>
parents: 17190
diff changeset
64 oldfig = get (0, "currentfigure");
87ba70043bfc Don't use ifelse in plot fcns to avoid unnecessary fcn evaluations.
Rik <rik@octave.org>
parents: 17190
diff changeset
65 endif
11382
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
66 unwind_protect
17060
2d17dbdf6b7d comet.m, comet3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16826
diff changeset
67 hax = newplot (hax);
2d17dbdf6b7d comet.m, comet3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16826
diff changeset
68 limits = [min(x), max(x), min(y), max(y), min(z), max(z)];
11382
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
69 num = numel (y);
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
70 dn = round (num/10);
17187
1c2f14a7935d comet3.m: Speed up animation by using low-level graphic commands.
Rik <rik@octave.org>
parents: 17126
diff changeset
71
1c2f14a7935d comet3.m: Speed up animation by using low-level graphic commands.
Rik <rik@octave.org>
parents: 17126
diff changeset
72 hl = plot3 (x(1), y(1), z(1), "color", "r", "marker", "none",
1c2f14a7935d comet3.m: Speed up animation by using low-level graphic commands.
Rik <rik@octave.org>
parents: 17126
diff changeset
73 x(1), y(1), z(1), "color", "g", "marker", "none",
1c2f14a7935d comet3.m: Speed up animation by using low-level graphic commands.
Rik <rik@octave.org>
parents: 17126
diff changeset
74 x(1), y(1), z(1), "color", "b", "marker", "o");
1c2f14a7935d comet3.m: Speed up animation by using low-level graphic commands.
Rik <rik@octave.org>
parents: 17126
diff changeset
75 axis (limits); # set manual limits to speed up plotting
1c2f14a7935d comet3.m: Speed up animation by using low-level graphic commands.
Rik <rik@octave.org>
parents: 17126
diff changeset
76
1c2f14a7935d comet3.m: Speed up animation by using low-level graphic commands.
Rik <rik@octave.org>
parents: 17126
diff changeset
77 for n = 2:(num+dn);
11382
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
78 m = n - dn;
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
79 m = max ([m, 1]);
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
80 k = min ([n, num]);
17187
1c2f14a7935d comet3.m: Speed up animation by using low-level graphic commands.
Rik <rik@octave.org>
parents: 17126
diff changeset
81 set (hl(1), "xdata", x(1:m), "ydata", y(1:m), "zdata", z(1:m));
1c2f14a7935d comet3.m: Speed up animation by using low-level graphic commands.
Rik <rik@octave.org>
parents: 17126
diff changeset
82 set (hl(2), "xdata", x(m:k), "ydata", y(m:k), "zdata", z(m:k));
1c2f14a7935d comet3.m: Speed up animation by using low-level graphic commands.
Rik <rik@octave.org>
parents: 17126
diff changeset
83 set (hl(3), "xdata", x(k) , "ydata", y(k) , "zdata", z(k));
11382
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
84 drawnow ();
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
85 pause (p);
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
86 endfor
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
87 unwind_protect_cleanup
17060
2d17dbdf6b7d comet.m, comet3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16826
diff changeset
88 if (! isempty (oldfig))
2d17dbdf6b7d comet.m, comet3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16826
diff changeset
89 set (0, "currentfigure", oldfig);
2d17dbdf6b7d comet.m, comet3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16826
diff changeset
90 endif
11382
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
91 end_unwind_protect
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
92
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
93 endfunction
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
94
14237
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
95
11382
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
96 %!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
97 %! clf;
17190
df4c4b7708a4 Add titles and clean-up plotting %!demos.
Rik <rik@octave.org>
parents: 17187
diff changeset
98 %! title ('comet3() animation');
df4c4b7708a4 Add titles and clean-up plotting %!demos.
Rik <rik@octave.org>
parents: 17187
diff changeset
99 %! view (3); hold on;
11382
ed74d1fbdc2f comet3: new function
John W. Eaton <jwe@octave.org>
parents:
diff changeset
100 %! t = 0:pi/20:5*pi;
17187
1c2f14a7935d comet3.m: Speed up animation by using low-level graphic commands.
Rik <rik@octave.org>
parents: 17126
diff changeset
101 %! comet3 (cos (t), sin (t), t, 0.05);
17190
df4c4b7708a4 Add titles and clean-up plotting %!demos.
Rik <rik@octave.org>
parents: 17187
diff changeset
102 %! hold off;
14237
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
103