No BSD License  

Highlights from
Moving Least Squares

image thumbnail

Moving Least Squares

by

 

13 Sep 2006 (Updated )

Tools that implements the Moving Least Squares algorithm to deform points and images

plotpointsLabeled(X,symbol,labels,color)
function plotpointsLabeled(X,symbol,labels,color)
% PLOTPOINTSLABELED  Plot a set of points labeling them
%
%  This function allow to plot a series of points represented in omogeneous
% coordinates or euclidean ones labeling with numeric or arbitrarious text
% the points.
%
%  Params:
%
%  X		= [x; y] or [x; y; w] coord matrix (for multiple points)
%  symbol	= Symbol to be used in the plot
%  labels   = Labels used for the points, must be a string cell of N
%             strings, starting number is accepted. (def={}=numbers)
%  color    =  The color used for the labels as [r,g,b] with range [0:1]
%             for each channel. (def=[0,0,0])
%
% Examples:
%
%  Plot a set of numbered points
% >> plotpointsLabeled([1 1; 2 2]','*')

% Check args:
% Check number of arguments
if nargin<1
	error('Argument required for the points plotting');
end
if nargin<2
	symbol = '+';
end
% Check first argument
sizeX=size(X);
if sizeX(2)==0 return; end
if sizeX(1)<2 | sizeX(1)>3
	error('X must be a n*2 or n*3 matrix');
end
% Check the labels:
if nargin<3 || ~isa(labels,'cell') || numel(labels)==0
    % Init the generation:
    if nargin>=3 && ~isa(labels,'cell') off=labels;
    else off=1; end
    labels = {};
    % Generating numerical labels:
    for ind=1:sizeX(2)
        labels{ind} = sprintf('%d',ind+off-1);
    end
end
% The color:
if nargin<4 color=[0,0,0]; end

% Check the type of plot
pX=[];pY=[];
if sizeX(1)==2
	% Plot in euclidean coords
	for i=1:sizeX(2)
   		pX = [pX X(1,i)];
		pY = [pY X(2,i)];
	end
else
	% Plot in omogeneous coords
	for i=1:sizeX(2)
		pX = [pX X(1,i)/X(3,i)];
		pY = [pY X(2,i)/X(3,i)];
	end
end

% Plotting
plot(pX,pY,symbol);

% Plotting labels
for i=1:min(sizeX(2),size(labels,2))
    % Plotting a single label
    text(pX(i),pY(i),labels(i),'Color',color);
end

Contact us