annotate rainbow.m @ 59:8ae91f3e55a5 Octave-Forge-2004.02.12

Add some of the missing functions to the categorical index
author pkienzle
date Thu, 12 Feb 2004 07:49:40 +0000
parents 2adef77b98d0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
1 ## Copyright (C) 1999,2000 Kai Habel
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
2 ##
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
3 ## This program is free software; you can redistribute it and/or modify
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
4 ## it under the terms of the GNU General Public License as published by
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
5 ## the Free Software Foundation; either version 2 of the License, or
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
6 ## (at your option) any later version.
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
7 ##
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
8 ## This program is distributed in the hope that it will be useful,
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
9 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
10 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
11 ## GNU General Public License for more details.
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
12 ##
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
13 ## You should have received a copy of the GNU General Public License
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
14 ## along with this program; if not, write to the Free Software
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
15 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
16
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
17 ## -*- texinfo -*-
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
18 ## @deftypefn {Function File} {} rainbow (@var{n})
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
19 ## Create color colormap.
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
20 ## (red through orange, yellow, green, blue to violet)
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
21 ## The argument @var{n} should be a scalar. If it
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
22 ## is omitted, the length of the current colormap or 64 is assumed.
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
23 ## @end deftypefn
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
24 ## @seealso{colormap}
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
25
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
26 ## Author: Kai Habel <kai.habel@gmx.de>
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
27
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
28 function map = rainbow (number)
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
29 ## this colormap is not part of matlab, it is like the prism
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
30 ## colormap map but with a continuous map
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
31
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
32 if (nargin == 0)
40
2adef77b98d0 Remove reference to global variable __current_colormap__; we need to do
pkienzle
parents: 0
diff changeset
33 number = rows (colormap);
0
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
34 elseif (nargin == 1)
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
35 if (! is_scalar (number))
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
36 error ("rainbow: argument must be a scalar");
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
37 endif
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
38 else
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
39 usage ("rainbow (number)");
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
40 endif
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
41
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
42 if (number == 1)
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
43 map = [1, 0, 0];
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
44 elseif (number > 1)
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
45 x = linspace (0, 1, number)';
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
46 r = (x < 2/5) + (x >= 2/5 & x < 3/5) .* (-5 * x + 3)\
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
47 + (x >= 4/5) .* (10/3 * x - 8/3);
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
48 g = (x < 2/5) .* (5/2 * x) + (x >= 2/5 & x < 3/5)\
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
49 + (x >= 3/5 & x < 4/5) .* (-5 * x + 4);
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
50 b = (x >= 3/5 & x < 4/5) .* (5 * x - 3) + (x >= 4/5);
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
51 map = [r, g, b];
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
52 else
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
53 map = [];
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
54 endif
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
55
587e29845b1d Initial revision
pkienzle
parents:
diff changeset
56 endfunction