function drawODOverlays(x1, y1, x2, y2) % Parameters tick_spacing = 10; % µm between ticks tick_length = 2; % µm tick mark length line_color = [0.5 0.5 0.5]; tick_color = [0.5 0.5 0.5]; font_size = 10; % Vector from start to end dx = x2 - x1; dy = y2 - y1; L = sqrt(dx^2 + dy^2); % Unit direction vector along diagonal ux = dx / L; uy = dy / L; % Perpendicular unit vector for ticks perp_ux = -uy; perp_uy = ux; % Midpoint (center) xc = (x1 + x2) / 2; yc = (y1 + y2) / 2; % Number of positive and negative ticks n_ticks = floor(L / (2 * tick_spacing)); % Draw main diagonal line plot([x1 x2], [y1 y2], '--', 'Color', line_color, 'LineWidth', 1.2); for i = -n_ticks:n_ticks d = i * tick_spacing; xt = xc + d * ux; yt = yc + d * uy; % Tick line endpoints xt1 = xt - 0.5 * tick_length * perp_ux; yt1 = yt - 0.5 * tick_length * perp_uy; xt2 = xt + 0.5 * tick_length * perp_ux; yt2 = yt + 0.5 * tick_length * perp_uy; % Draw tick plot([xt1 xt2], [yt1 yt2], '--', 'Color', tick_color, 'LineWidth', 1); % Label: centered at tick, offset slightly along diagonal if d ~= 0 text(xt, yt, sprintf('%+d', d), ... 'Color', tick_color, ... 'FontSize', font_size, ... 'HorizontalAlignment', 'center', ... 'VerticalAlignment', 'bottom', ... 'Rotation', atan2d(dy, dx)); end end end