samer@47: % hsvx - HSV colour map with extended functionality samer@47: % samer@47: % hsvx :: N:natural -> [[N,3]] ~'same as hsv'. samer@47: % samer@47: % hsvx :: samer@47: % N:natural ~'size of colormap to return', samer@47: % 0--1 ~'inital hue', samer@47: % 0--1 ~'saturation', samer@47: % 0--1 ~'value' samer@47: % options { samer@61: % brightness :: real/0 ~'try to get even perceptual brightness: 0 not, 1 full' samer@47: % } samer@47: % -> [[N,3]]. samer@47: samer@47: function M=hsvx(N,H0,S,V,varargin) samer@47: samer@47: if nargin<2, H0=0; end samer@47: if nargin<3, S=1; end samer@47: if nargin<4, V=1; end samer@61: opts=options('brightness',0,varargin{:}); samer@47: samer@47: H=linspace(H0,H0+1,N+1); samer@47: M=hsv2rgb([mod(H(1:end-1),1)',repmat([S,V],N,1)]); samer@61: if opts.brightness >0 samer@61: L=luminocity(M).^opts.brightness; samer@61: M=M./repmat(L,1,3); samer@61: M=V*M./max(max(M)); samer@61: end samer@47: end samer@47: