diff --git a/ShoulderCase/@MaskSubdivider/MaskSubdivider.m b/ShoulderCase/@MaskSubdivider/MaskSubdivider.m index f9ac32a..de7545e 100644 --- a/ShoulderCase/@MaskSubdivider/MaskSubdivider.m +++ b/ShoulderCase/@MaskSubdivider/MaskSubdivider.m @@ -1,60 +1,60 @@ classdef MaskSubdivider < handle properties (Access = private) % 10° slices numberOfAngularDivisions = 36; numberOfRadialDivisions = 10; center mask sinusGrid cosineGrid angleGrid normGrid end methods function obj = MaskSubdivider(mask) obj.mask = mask; % default center is the middle of the mask obj.center = round(size(obj.mask)/2); end function setNumberOfAngularDivisions(obj, value) obj.numberOfAngularDivisions = value; end function setNumberOfRadialDivisions(obj, value) obj.numberOfRadialDivisions = value; end - function setCenterOfDivisions(obj, centerIndices) + function setCenter(obj, centerIndices) obj.center = centerIndices; end function set.center(obj, value) obj.center = value; obj.updateGrids(); end function updateGrids(obj) [xGrid, yGrid] = meshgrid(1:size(obj.mask, 1), 1:size(obj.mask, 2)); xGrid = xGrid-obj.center(1); yGrid = yGrid-obj.center(2); obj.normGrid = sqrt(xGrid.^2 + yGrid.^2); obj.sinusGrid = yGrid./obj.normGrid; obj.cosineGrid = xGrid./obj.normGrid; partialAngleGrid = acosd(obj.cosineGrid); obj.angleGrid = [... (360 - partialAngleGrid).*(obj.sinusGrid < 0)... + partialAngleGrid.*(obj.sinusGrid >= 0)]; end function output = getAngularDivision(obj, middleAngle, angularSpan) minAngle = mod(middleAngle-angularSpan/2, 360); maxAngle = mod(middleAngle+angularSpan/2, 360); output = obj.angleGrid > minAngle & obj.angleGrid < maxAngle; end end end \ No newline at end of file