annotate scripts/plot/draw/comet.m @ 30564:796f54d4ddbf stable

update Octave Project Developers copyright for the new year In files that have the "Octave Project Developers" copyright notice, update for 2021. In all .txi and .texi files except gpl.txi and gpl.texi in the doc/liboctave and doc/interpreter directories, change the copyright to "Octave Project Developers", the same as used for other source files. Update copyright notices for 2022 (not done since 2019). For gpl.txi and gpl.texi, change the copyright notice to be "Free Software Foundation, Inc." and leave the date at 2007 only because this file only contains the text of the GPL, not anything created by the Octave Project Developers. Add Paul Thomas to contributors.in.
author John W. Eaton <jwe@octave.org>
date Tue, 28 Dec 2021 18:22:40 -0500
parents 7854d5752dd2
children 597f3ee61a48
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
1 ########################################################################
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
2 ##
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
3 ## Copyright (C) 2008-2022 The Octave Project Developers
27918
b442ec6dda5c use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents: 26667
diff changeset
4 ##
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
5 ## See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
6 ## distribution or <https://octave.org/copyright/>.
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
7 ##
11104
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 10793
diff changeset
8 ## This file is part of Octave.
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 10793
diff changeset
9 ##
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24432
diff changeset
10 ## Octave is free software: you can redistribute it and/or modify it
11104
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 10793
diff changeset
11 ## under the terms of the GNU General Public License as published by
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24432
diff changeset
12 ## the Free Software Foundation, either version 3 of the License, or
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
13 ## (at your option) any later version.
11104
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 10793
diff changeset
14 ##
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 10793
diff changeset
15 ## Octave is distributed in the hope that it will be useful, but
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 10793
diff changeset
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
18 ## GNU General Public License for more details.
11104
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 10793
diff changeset
19 ##
8126
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
20 ## You should have received a copy of the GNU General Public License
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
21 ## along with Octave; see the file COPYING. If not, see
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24432
diff changeset
22 ## <https://www.gnu.org/licenses/>.
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
23 ##
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
24 ########################################################################
8126
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
25
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
26 ## -*- texinfo -*-
20852
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 20173
diff changeset
27 ## @deftypefn {} {} comet (@var{y})
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 20173
diff changeset
28 ## @deftypefnx {} {} comet (@var{x}, @var{y})
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 20173
diff changeset
29 ## @deftypefnx {} {} comet (@var{x}, @var{y}, @var{p})
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 20173
diff changeset
30 ## @deftypefnx {} {} comet (@var{hax}, @dots{})
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
31 ## Produce a simple comet style animation along the trajectory provided by
20173
777f26aa8e3e doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19697
diff changeset
32 ## the input coordinate vectors (@var{x}, @var{y}).
777f26aa8e3e doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19697
diff changeset
33 ##
777f26aa8e3e doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19697
diff changeset
34 ## If @var{x} is not specified it defaults to the indices of @var{y}.
8126
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
35 ##
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
36 ## The speed of the comet may be controlled by @var{p}, which represents the
16814
64e7bb01fce2 doc: Improve documentation for 2-D plot functions
Rik <rik@octave.org>
parents: 14868
diff changeset
37 ## time each point is displayed before moving to the next one. The default for
26667
3c4ba50b2024 comet.m: Use constant speed regardless of size of data input.
Rik <rik@octave.org>
parents: 26376
diff changeset
38 ## @var{p} is @code{5 / numel (@var{y})}.
8126
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
39 ##
24431
0c6cedafc71e doc: Use 'axes' rather than 'axis' appropriately in docstrings.
Rik <rik@octave.org>
parents: 23219
diff changeset
40 ## If the first argument @var{hax} is an axes handle, then plot into this axes,
17122
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17060
diff changeset
41 ## 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
42 ## @seealso{comet3}
8126
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
43 ## @end deftypefn
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
44
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
45 function comet (varargin)
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
46
17060
2d17dbdf6b7d comet.m, comet3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
47 [hax, varargin, nargin] = __plt_get_axis_arg__ ("comet", varargin{:});
11378
a0278a856516 comet: if axes are specified, switch temporarily
John W. Eaton <jwe@octave.org>
parents: 11104
diff changeset
48
28901
3c37ae43996a maint: Code cleanup associated with varargin checking.
Rik <rik@octave.org>
parents: 27985
diff changeset
49 if (nargin == 0 || nargin > 3)
8126
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
50 print_usage ();
28901
3c37ae43996a maint: Code cleanup associated with varargin checking.
Rik <rik@octave.org>
parents: 27985
diff changeset
51 endif
3c37ae43996a maint: Code cleanup associated with varargin checking.
Rik <rik@octave.org>
parents: 27985
diff changeset
52
3c37ae43996a maint: Code cleanup associated with varargin checking.
Rik <rik@octave.org>
parents: 27985
diff changeset
53 if (nargin == 1)
8126
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
54 y = varargin{1};
14868
5d3a684236b0 maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents: 14245
diff changeset
55 x = 1:numel (y);
26667
3c4ba50b2024 comet.m: Use constant speed regardless of size of data input.
Rik <rik@octave.org>
parents: 26376
diff changeset
56 p = 5 / numel (y);
11378
a0278a856516 comet: if axes are specified, switch temporarily
John W. Eaton <jwe@octave.org>
parents: 11104
diff changeset
57 elseif (nargin == 2)
8126
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
58 x = varargin{1};
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
59 y = varargin{2};
26667
3c4ba50b2024 comet.m: Use constant speed regardless of size of data input.
Rik <rik@octave.org>
parents: 26376
diff changeset
60 p = 5 / numel (y);
11378
a0278a856516 comet: if axes are specified, switch temporarily
John W. Eaton <jwe@octave.org>
parents: 11104
diff changeset
61 elseif (nargin == 3)
8126
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
62 x = varargin{1};
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
63 y = varargin{2};
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
64 p = varargin{3};
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
65 endif
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
66
17211
87ba70043bfc Don't use ifelse in plot fcns to avoid unnecessary fcn evaluations.
Rik <rik@octave.org>
parents: 17190
diff changeset
67 oldfig = [];
17301
68bcac3c043a Correct inversion accidentally introduced in cset 87ba70043bfc.
Rik <rik@octave.org>
parents: 17211
diff changeset
68 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
69 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
70 endif
11378
a0278a856516 comet: if axes are specified, switch temporarily
John W. Eaton <jwe@octave.org>
parents: 11104
diff changeset
71 unwind_protect
17060
2d17dbdf6b7d comet.m, comet3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
72 hax = newplot (hax);
2d17dbdf6b7d comet.m, comet3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
73 limits = [min(x), max(x), min(y), max(y)];
11378
a0278a856516 comet: if axes are specified, switch temporarily
John W. Eaton <jwe@octave.org>
parents: 11104
diff changeset
74 num = numel (y);
a0278a856516 comet: if axes are specified, switch temporarily
John W. Eaton <jwe@octave.org>
parents: 11104
diff changeset
75 dn = round (num/10);
17186
c954b0a396a2 comet.m: Speed up animation by using low-level graphic commands.
Rik <rik@octave.org>
parents: 17126
diff changeset
76
c954b0a396a2 comet.m: Speed up animation by using low-level graphic commands.
Rik <rik@octave.org>
parents: 17126
diff changeset
77 hl = plot (x(1), y(1), "color", "r", "marker", "none",
c954b0a396a2 comet.m: Speed up animation by using low-level graphic commands.
Rik <rik@octave.org>
parents: 17126
diff changeset
78 x(1), y(1), "color", "g", "marker", "none",
c954b0a396a2 comet.m: Speed up animation by using low-level graphic commands.
Rik <rik@octave.org>
parents: 17126
diff changeset
79 x(1), y(1), "color", "b", "marker", "o");
c954b0a396a2 comet.m: Speed up animation by using low-level graphic commands.
Rik <rik@octave.org>
parents: 17126
diff changeset
80 axis (limits); # set manual limits to speed up plotting
c954b0a396a2 comet.m: Speed up animation by using low-level graphic commands.
Rik <rik@octave.org>
parents: 17126
diff changeset
81
26667
3c4ba50b2024 comet.m: Use constant speed regardless of size of data input.
Rik <rik@octave.org>
parents: 26376
diff changeset
82 ## Initialize the timer
3c4ba50b2024 comet.m: Use constant speed regardless of size of data input.
Rik <rik@octave.org>
parents: 26376
diff changeset
83 t = p;
3c4ba50b2024 comet.m: Use constant speed regardless of size of data input.
Rik <rik@octave.org>
parents: 26376
diff changeset
84 timerid = tic ();
3c4ba50b2024 comet.m: Use constant speed regardless of size of data input.
Rik <rik@octave.org>
parents: 26376
diff changeset
85
26268
6dd232798997 maint: Remove useless ';' from end of for, if, while, etc. statements.
Rik <rik@octave.org>
parents: 25054
diff changeset
86 for n = 2:(num+dn)
11378
a0278a856516 comet: if axes are specified, switch temporarily
John W. Eaton <jwe@octave.org>
parents: 11104
diff changeset
87 m = n - dn;
a0278a856516 comet: if axes are specified, switch temporarily
John W. Eaton <jwe@octave.org>
parents: 11104
diff changeset
88 m = max ([m, 1]);
a0278a856516 comet: if axes are specified, switch temporarily
John W. Eaton <jwe@octave.org>
parents: 11104
diff changeset
89 k = min ([n, num]);
17186
c954b0a396a2 comet.m: Speed up animation by using low-level graphic commands.
Rik <rik@octave.org>
parents: 17126
diff changeset
90 set (hl(1), "xdata", x(1:m), "ydata", y(1:m));
c954b0a396a2 comet.m: Speed up animation by using low-level graphic commands.
Rik <rik@octave.org>
parents: 17126
diff changeset
91 set (hl(2), "xdata", x(m:k), "ydata", y(m:k));
17187
1c2f14a7935d comet3.m: Speed up animation by using low-level graphic commands.
Rik <rik@octave.org>
parents: 17186
diff changeset
92 set (hl(3), "xdata", x(k), "ydata", y(k));
26667
3c4ba50b2024 comet.m: Use constant speed regardless of size of data input.
Rik <rik@octave.org>
parents: 26376
diff changeset
93
3c4ba50b2024 comet.m: Use constant speed regardless of size of data input.
Rik <rik@octave.org>
parents: 26376
diff changeset
94 pause (t - toc (timerid));
3c4ba50b2024 comet.m: Use constant speed regardless of size of data input.
Rik <rik@octave.org>
parents: 26376
diff changeset
95 t += p;
11378
a0278a856516 comet: if axes are specified, switch temporarily
John W. Eaton <jwe@octave.org>
parents: 11104
diff changeset
96 endfor
17186
c954b0a396a2 comet.m: Speed up animation by using low-level graphic commands.
Rik <rik@octave.org>
parents: 17126
diff changeset
97
11378
a0278a856516 comet: if axes are specified, switch temporarily
John W. Eaton <jwe@octave.org>
parents: 11104
diff changeset
98 unwind_protect_cleanup
17060
2d17dbdf6b7d comet.m, comet3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
99 if (! isempty (oldfig))
2d17dbdf6b7d comet.m, comet3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
100 set (0, "currentfigure", oldfig);
2d17dbdf6b7d comet.m, comet3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
101 endif
11378
a0278a856516 comet: if axes are specified, switch temporarily
John W. Eaton <jwe@octave.org>
parents: 11104
diff changeset
102 end_unwind_protect
8126
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
103
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
104 endfunction
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
105
14237
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
106
8126
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
107 %!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
108 %! clf;
22302
1c4cd12987f5 Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents: 20852
diff changeset
109 %! title ("comet() animation");
17190
df4c4b7708a4 Add titles and clean-up plotting %!demos.
Rik <rik@octave.org>
parents: 17187
diff changeset
110 %! hold on;
8126
a012580f0d2f comet.m: New File.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
111 %! t = 0:.1:2*pi;
14237
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
112 %! x = cos (2*t) .* (cos (t).^2);
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
113 %! y = sin (2*t) .* (sin (t).^2);
26667
3c4ba50b2024 comet.m: Use constant speed regardless of size of data input.
Rik <rik@octave.org>
parents: 26376
diff changeset
114 %! comet (x, y, .05);
17190
df4c4b7708a4 Add titles and clean-up plotting %!demos.
Rik <rik@octave.org>
parents: 17187
diff changeset
115 %! hold off;