123
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user