Skip to content
Snippets Groups Projects
gtGetVolsIntersectLimits.m 1013 B
Newer Older
function [lims1, lims2] = gtGetVolsIntersectLimits(size1, size2, shift)
% GTGETVOLSINTERSECTLIMITS Returns the limits in the two volumes, that overlap,
% according to the shift.
%   [lims1, lims2] = gtGetVolsIntersectLimits(size1, size2, shift)

    size1((numel(size1)+1):3) = 1;
    size2((numel(size2)+1):3) = 1;
    if (numel(size1) > 3)
        warning('gtGetVolsIntersectLimits:wrong_argument', ...
            'first volume size refers to a %d-dimensional volume', numel(size1))
    end
    if (numel(size2) > 3)
        warning('gtGetVolsIntersectLimits:wrong_argument', ...
            'second volume size refers to a %d-dimensional volume', numel(size2))
    end

    % volume1 limits
    lims1_min = max(1, shift +1);
    lims1_max = min(size1, shift + size2);

    % volume2 limits
    lims2_min = max(1, -shift +1);
    lims2_max = min(size2, size1 - shift);

    lims1 = [reshape(lims1_min, 1, []); reshape(lims1_max, 1, [])];
    lims2 = [reshape(lims2_min, 1, []); reshape(lims2_max, 1, [])];