This commit is contained in:
Horldsence
2026-09-13 10:27:09 +08:00
parent b810ec7777
commit 82311a47cc
52 changed files with 2563 additions and 1278 deletions
+44
View File
@@ -0,0 +1,44 @@
function fig_geo_q4_mincover()
%FIG_GEO_Q4_MINCOVER 问题四:31 点最小命中集与前向半盘覆盖语义。
S = fig_style();
D = load_data(S, 'geo_q4');
H = geom_helpers();
fig = figure('Color', 'w', 'Visible', 'off');
t = tiledlayout(fig, 1, 2, 'TileSpacing', 'compact', 'Padding', 'compact');
% 左:Ω 内的 31 个覆盖点
ax1 = nexttile(t);
hold(ax1, 'on');
hw = H.circle(ax1, [0 0], D.omega_r, pick_color(S, 'primary'), 1.2, '-');
hp = plot(ax1, D.points(:, 1), D.points(:, 2), 'o', 'MarkerSize', 5, ...
'MarkerFaceColor', pick_color(S, 'accent'), 'MarkerEdgeColor', 'none');
hold(ax1, 'off');
axis(ax1, 'equal');
xlim(ax1, [-D.half, D.half]);
ylim(ax1, [-D.half, D.half]);
xlabel(ax1, 'x / m');
ylabel(ax1, 'y / m');
legend(ax1, [hw, hp], D.legend, 'Location', 'southoutside', ...
'Orientation', 'horizontal');
% 右:前向半盘(朝向未知,±90°)
ax2 = nexttile(t);
hold(ax2, 'on');
H.poly(ax2, D.half_disk, pick_color(S, 'accent'), 0.30, 'none', 0.5);
H.circle(ax2, [0 0.5], 0.85, pick_color(S, 'muted'), 0.9, '-');
plot(ax2, [0 0], [0.5 - 0.85, 0.5 + 0.85], '--', ...
'Color', pick_color(S, 'accent'), 'LineWidth', 1.0);
H.arrow(ax2, [0 0.5], [0.85 0.5], pick_color(S, 'accent'));
text(ax2, 0.425, 0.30, D.radius_label, 'HorizontalAlignment', 'center', ...
'Interpreter', 'none');
text(ax2, 0.0, 1.55, D.heading_label, 'HorizontalAlignment', 'center', ...
'Interpreter', 'none');
hold(ax2, 'off');
axis(ax2, 'equal');
xlim(ax2, [-1.15 1.35]);
ylim(ax2, [-0.55 1.75]);
axis(ax2, 'off');
fig_save(fig, S, 'geo-q4-minimum-cover-31-points.png');
end