function getInput global marks mark_handles clear_flag; marks = []; mark_handles = []; while (1) if (clear_flag) break; end [x, y, b] = ginput(1); if (isempty(b)) break; end if (b == 1) x = floor(x); y = floor(y); if (x >= 0 & x <= 130.5 & y >=0 & y <= 60.5) marks = [marks; x, y]; r = rectangle('Curvature', [1, 1], 'Position', [x, y, 1, 1], 'FaceColor', 'g', 'LineWidth', 1); mark_handles = [mark_handles; r]; end end if (b == 3) [s, foo] = size(marks); minIndex = 1; minDist = (x - marks(1,1))^2 + (y - marks(1,2))^2; for i = 2 : s dist = (x - marks(i,1))^2 + (y - marks(i,2))^2; if (dist < minDist) minDist = dist; minIndex = i; end end if (x >= 0 & x <= 130.5 & y >=0 & y <= 60.5) if (minIndex == 1) marks = marks(2:s, :); delete(mark_handles(1)); mark_handles = mark_handles(2:s); else if (minIndex == s) marks = marks(1: s-1, :); delete(mark_handles(s)); mark_handles = mark_handles(1: s-1); else marks = [marks(1: minIndex - 1, :); marks(minIndex + 1: s, :)]; delete(mark_handles(minIndex)); mark_handles = [mark_handles(1: minIndex - 1); mark_handles(minIndex + 1: s)]; end end end end end [s, foo] = size(mark_handles); for j = 1 : s delete(mark_handles(j)); end