function [ R, T ] = AlignShapesKabsch ( alignFrom, alignTo ) %ALIGN3DSHAPES Summary of this function goes here % Detailed explanation goes here dims = size(alignFrom, 2); alignFromMean = alignFrom - repmat(mean(alignFrom), size(alignFrom,1),1); alignToMean = alignTo - repmat(mean(alignTo), size(alignTo,1),1); [U, ~, V] = svd( alignFromMean' * alignToMean); % make sure no reflection is there d = sign(det(V*U')); corr = eye(dims); corr(end,end) = d; R = V*corr*U'; T = mean(alignTo) - (R * mean(alignFrom)')'; T = T'; end