Mercurial > hg > ishara
view graphics/scatui.m @ 61:eff6bddf82e3 tip
Finally implemented perceptual brightness thing.
author | samer |
---|---|
date | Sun, 11 Oct 2015 10:20:42 +0100 |
parents | 82075c94eed1 |
children |
line wrap: on
line source
function handles=scatui(fig2,plotfn,X,varargin) % scatui - scat with interactive point clicking ui % % scatui :: % handle ~'figure to do secondary plot', % (natural->unit) ~'function to do secondary plot', % [[N,E]] ~'array of N points in E-space' % -> action handle. % % This does several things: % 1. Plots 3d scatter plot as stereo pairs in fig 1 % 2. Sets up stereo 3D cursor. % 3. Sets up button click callbacks so you can % click to select one of the points % 4. Starts the whole thing rotating so you can % see what shape it is without going cross-eyed % transpose if it looks appropriate if size(X,1)<5, X=X'; end if size(X,2)>2 pick=@(t,o)pick3d(t,get(o,'XData'),get(o,'YData'),get(o,'ZData')); curf=@(t,varargin)cursor3d(t(1:3),varargin{:}); else pick=@(t,o)pick3d(t,get(o,'XData'),get(o,'YData'),zeros(size(X,1),1)); curf=@(t,varargin)cursor2d(t(1:2),varargin{:}); end % do scat in current figure handles=scat(X,varargin{:}); fig1=gcf; curs=[]; % get info about scatter plot set(handles,'ButtonDownFcn',@btndown); function btndown(obj,dummy) r=get(get(obj,'Parent'),'CurrentPoint'); % get clicked point from axes [x,i]=pick(r,obj); % find nearest point if isempty(curs) curs=curf(x); else curf(x,curs); % move cursor end % title(sprintf('pick: %d',i)); figure(fig2); plotfn(i); % do plot in other figure figure(fig1); drawnow; % return to this figure end end