# HG changeset patch # User Rik # Date 1549160083 28800 # Node ID 3c4ba50b20244bc1d34eb5b100ffab84ad815c77 # Parent 5c46c13b43ad39d2f4d42425f9f2e773a9266b4f comet.m: Use constant speed regardless of size of data input. * comet.m: Change default time to display each data point to "5 / numel (z)" so that it scales with input. Update documentation to reflect this. Use more accurate timing mechanism borrowed from movie.m. diff -r 5c46c13b43ad -r 3c4ba50b2024 scripts/plot/draw/comet.m --- a/scripts/plot/draw/comet.m Sat Feb 02 18:07:47 2019 -0800 +++ b/scripts/plot/draw/comet.m Sat Feb 02 18:14:43 2019 -0800 @@ -28,7 +28,7 @@ ## ## The speed of the comet may be controlled by @var{p}, which represents the ## time each point is displayed before moving to the next one. The default for -## @var{p} is 0.1 seconds. +## @var{p} is @code{5 / numel (@var{y})}. ## ## If the first argument @var{hax} is an axes handle, then plot into this axes, ## rather than the current axes returned by @code{gca}. @@ -47,11 +47,11 @@ elseif (nargin == 1) y = varargin{1}; x = 1:numel (y); - p = 0.1; + p = 5 / numel (y); elseif (nargin == 2) x = varargin{1}; y = varargin{2}; - p = 0.1; + p = 5 / numel (y); elseif (nargin == 3) x = varargin{1}; y = varargin{2}; @@ -73,6 +73,10 @@ x(1), y(1), "color", "b", "marker", "o"); axis (limits); # set manual limits to speed up plotting + ## Initialize the timer + t = p; + timerid = tic (); + for n = 2:(num+dn) m = n - dn; m = max ([m, 1]); @@ -80,8 +84,9 @@ set (hl(1), "xdata", x(1:m), "ydata", y(1:m)); set (hl(2), "xdata", x(m:k), "ydata", y(m:k)); set (hl(3), "xdata", x(k), "ydata", y(k)); - drawnow (); - pause (p); + + pause (t - toc (timerid)); + t += p; endfor unwind_protect_cleanup @@ -100,5 +105,5 @@ %! t = 0:.1:2*pi; %! x = cos (2*t) .* (cos (t).^2); %! y = sin (2*t) .* (sin (t).^2); -%! comet (x, y, 0.05); +%! comet (x, y, .05); %! hold off;