changeset 8126:a012580f0d2f

comet.m: New File.
author Ben Abbott <bpabbott@mac.com>
date Mon, 22 Sep 2008 13:28:30 -0400
parents 4fce6da228c6
children 86568be36992
files scripts/ChangeLog scripts/plot/Makefile.in scripts/plot/comet.m
diffstat 3 files changed, 93 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/ChangeLog	Mon Sep 22 13:19:18 2008 -0400
+++ b/scripts/ChangeLog	Mon Sep 22 13:28:30 2008 -0400
@@ -1,3 +1,8 @@
+2008-09-22 Ben Abbott <bpabbott@mac.com>
+
+	* plot/comet.m: New file.
+	* plot/Makefile.in (SOURCES): Add it here.
+
 2008-09-22  David Bateman  <dbateman@free.fr>
 
 	general/quadgk.m: No function count in quadgk and so don't try and
--- a/scripts/plot/Makefile.in	Mon Sep 22 13:19:18 2008 -0400
+++ b/scripts/plot/Makefile.in	Mon Sep 22 13:28:30 2008 -0400
@@ -86,6 +86,7 @@
   close.m \
   closereq.m \
   colorbar.m \
+  comet.m \
   compass.m \
   contour3.m \
   contour.m \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/plot/comet.m	Mon Sep 22 13:28:30 2008 -0400
@@ -0,0 +1,87 @@
+## Copyright (C) 2008 Ben Abbott
+## 
+## 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.
+## 
+## You should have received a copy of the GNU General Public License
+## along with Octave; see the file COPYING.  If not, see
+## <http://www.gnu.org/licenses/>.
+
+## -*- texinfo -*-
+## @deftypefn {Function File} {} comet (@var{y})
+## @deftypefnx {Function File} {} comet (@var{x}, @var{y})
+## @deftypefnx {Function File} {} comet (@var{x}, @var{y}, @var{p})
+## @deftypefnx {Function File} {} comet (@var{ax}, @dots{})
+## Produce a simple comet style animation along the trajectory provided by 
+## the input coordinate vecors (@var{x}, @var{y}), where @var{x} will default
+## to the indices of @var{y}.
+##
+## The speed of the comet may be controlled by @var{p}, which represents the
+## time which passes as the animation passes from one point to the next. The
+## default for @var{p} is 0.1 seconds.
+##
+## If @var{ax} is specified the animition is produced in that axis rather than
+## the @code{gca}.
+## 
+## @seealso{comet3}
+## @end deftypefn
+
+## Author: Ben Abbott bpabbott@mac.com
+## Created: 2008-09-21
+
+function comet (varargin)
+
+  if (nargin == 0)
+    print_usage ();
+  elseif (numel (varargin{1}) == 1 && ishandle (varargin{1}))
+    axes (varargin{1});
+    varargin = varargin(2:end);
+    numargin = nargin - 1;
+  else
+    numargin = nargin;
+  endif
+
+  p = 0.1;
+  if (numargin == 1)
+    y = varargin{1};
+    x = 1:numel(y);
+  elseif (numargin == 2)
+    x = varargin{1};
+    y = varargin{2};
+  elseif (numargin == 3)
+    x = varargin{1};
+    y = varargin{2};
+    p = varargin{3};
+  else
+    print_usage ();
+  endif
+  
+  theaxis = [min(x), max(x), min(y), max(y)];
+  num = numel (y);
+  dn = round (num/10);
+  for n = 1:(num+dn);
+    m = n - dn;
+    m = max ([m, 1]);
+    k = min ([n, num]);
+    h = plot (x(1:m), y(1:m), "r", x(m:k), y(m:k), "g", x(k), y(k), "ob");
+    axis (theaxis);
+    drawnow ();
+    pause (p);
+  endfor
+
+endfunction
+
+%!demo
+%! t = 0:.1:2*pi;
+%! x = cos(2*t).*(cos(t).^2);
+%! y = sin(2*t).*(sin(t).^2);
+%! comet(x,y)
+
+