function outputArg = loadAmiraLandmarks(obj) %LOAD Load 5 humeral head landmarks assert(obj.hasAmiraLandmarks(), "No Amira landmarks found."); landmarks = obj.getAmiraLandmarks(); assert(landmarksBelongToCorrectShoulder(landmarks, obj.shoulder),... "Loaded Amira landmarks belong to the other shoulder."); obj.landmarks = landmarks; outputArg = 1; end function output = landmarksBelongToCorrectShoulder(landmarks, shoulder) % humerus landmarks should be located lateraly to the scapula coordinate % system medioLateralAxis = Vector(shoulder.scapula.coordSys.ML); scapulaOrigin = shoulder.scapula.coordSys.origin; originToLandmarks = []; for i = 1:size(landmarks, 1) originToLandmarks = [... originToLandmarks... ; Vector(scapulaOrigin, landmarks(i,:))]; end landmarksLaterality = arrayfun(... @(originToLandmark) originToLandmark.dot(medioLateralAxis),... originToLandmarks); output = all(landmarksLaterality > 0); end