/usr/share/plplot_octave/comet.m is in octave-plplot 5.13.0+dfsg-6ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | ## Copyright (C) 1998-2003 Joao Cardoso.
##
## This program is free software; you can redistribute it and/or modify it
## under the terms of the GNU General Public License as published by the
## Free Software Foundation; either version 2 of the License, or (at your
## option) any later version.
##
## This program is distributed in the hope that it will be useful, but
## WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
## General Public License for more details.
##
## This file is part of plplot_octave.
## comet(Y) displays an animated comet plot of the vector Y.
## comet(X,Y) displays an animated comet plot of vector Y vs. X.
## comet(X,Y,p) uses a comet of length p*length(Y). Default is p = 0.10.
## comet, by itself, is self demonstrating.
## Example:
## t = -pi:pi/200:pi;
## comet(t,tan(sin(t))-sin(tan(t)))
function comet(x, y, p)
ax_s = axis("state");
ax_s = deblank(ax_s(1,:));
if (strcmp("auto", ax_s) == 1)
warning("comet: FIXME: axis is 'auto', turning it to 'tight'.");
axis "tight"
endif
if (nargin == 0)
x = -pi:pi/200:pi;
y = tan(sin(x))-sin(tan(x));
p = 0.1;
elseif (nargin < 2)
y = x;
x = 1:length(y);
endif
if (nargin < 3)
p = 0.10;
endif
if (rows(x) != 1)
x = x';
endif
if (rows(y) != 1)
y = y';
endif
plot(x,y);
[r, g, b] = plgcol0(1);
plscol0(1, 255, 0, 255);
plcol0(1);
pllsty(1);
old_hold = ishold;
hold "on";
m = length(x);
k = round(p*m);
if (k == 1)
k = 2;
endif
plxormod(1);
unwind_protect # recover if user hit ^C
## Grow the body
for i = 1:k
__comet(x(1:i), y(1:i));
endfor
## Primary loop
for i = k+1:m-k
__comet(x(i:i+k), y(i:i+k));
endfor
## Clean up the tail
for i = m-k+1:m
__comet(x(i:m), y(i:m));
endfor
unwind_protect_cleanup
plxormod(0);
if (old_hold == 0)
hold "off"
endif
plscol0(1, r, g, b);
end_unwind_protect
if (strcmp("auto", ax_s) == 1)
axis "auto"
endif
endfunction
|