function output = plotManualAutoDifference(obj, shoulderSide, normLimitForOutliers) % Plot the vectors between auto and manual points. % % input: normLimitForOutliers % % The vector is green if below the value given to normLimitForOutliers, % otherwise it is red. % initialisation manual = obj.shoulders.(shoulderSide).manual; manualPoints = []; auto = obj.shoulders.(shoulderSide).auto; autoPoints = []; % find maximum number of common groove points minGroovePoints = min(size(manual.scapula.groove),size(auto.scapula.groove)); if (minGroovePoints > 0) manualPoints = [manual.scapula.groove(1:minGroovePoints,:)]; autoPoints = [auto.scapula.groove(1:minGroovePoints,:)]; end % create points arrays manualPoints = [manualPoints;... manual.scapula.angulusInferior;... manual.scapula.trigonumSpinae;... manual.scapula.processusCoracoideus;... manual.scapula.acromioClavicular;... manual.scapula.angulusAcromialis;... manual.scapula.spinoGlenoidNotch;... manual.scapula.coordSys.origin;... manual.scapula.glenoid.center;... ]; autoPoints = [autoPoints;... auto.scapula.angulusInferior;... auto.scapula.trigonumSpinae;... auto.scapula.processusCoracoideus;... auto.scapula.acromioClavicular;... auto.scapula.angulusAcromialis;... auto.scapula.spinoGlenoidNotch;... auto.scapula.coordSys.origin;... auto.scapula.glenoid.center;... ]; % measure norm difference manualAutoDifference = vecnorm(autoPoints-manualPoints,2,2); % plot the difference vectors for i = 1:size(manualAutoDifference,1) if (manualAutoDifference(i) > normLimitForOutliers) % outlier color = 'red'; else % valid point color = 'green'; end differenceLine = [manualPoints(i,:);... autoPoints(i,:)]; plotHandle(i) = plot3(differenceLine(:,1),differenceLine(:,2),differenceLine(:,3),... ':x',... 'Color',color,... 'LineWidth',3); hold on end output = plotHandle; end