Mercurial > octave
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 |
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 | 8 ## This file is part of Octave. |
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 | 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 | 14 ## |
15 ## Octave is distributed in the hope that it will be useful, but | |
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 | 19 ## |
8126 | 20 ## You should have received a copy of the GNU General Public License |
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 | 25 |
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 | 35 ## |
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 | 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 | 43 ## @end deftypefn |
44 | |
45 function comet (varargin) | |
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 | 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 | 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 | 58 x = varargin{1}; |
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 | 62 x = varargin{1}; |
63 y = varargin{2}; | |
64 p = varargin{3}; | |
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 | 103 |
104 endfunction | |
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 | 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 | 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; |