Files
mcm-26-b/scripts/matlab/fig_geo_q1_meetup.m
T
2026-09-13 10:27:09 +08:00

53 lines
2.3 KiB
Matlab

function fig_geo_q1_meetup()
%FIG_GEO_Q1_MEETUP 问题一:角域交会总览与定位区域放大(直径圆、最小包围圆)。
S = fig_style();
D = load_data(S, 'geo_q1_meetup');
H = geom_helpers();
fig = figure('Color', 'w', 'Visible', 'off');
t = tiledlayout(fig, 1, 2, 'TileSpacing', 'compact', 'Padding', 'compact');
% 左:角域交会总览(交会区域在总览里只是一个点,放大后见右图)
ax1 = nexttile(t);
hold(ax1, 'on');
hw = gobjects(0);
for i = 1:size(D.wedges, 1)
hw = H.wedge(ax1, squeeze(D.wedges(i, :, :)), pick_color(S, 'primary'), 0.25);
end
hr = plot(ax1, D.zoom_center(1), D.zoom_center(2), 's', 'MarkerSize', 6, ...
'MarkerFaceColor', pick_color(S, 'accent'), 'MarkerEdgeColor', 'none');
plot(ax1, D.stations(:, 1), D.stations(:, 2), 'o', 'MarkerSize', 6, ...
'MarkerFaceColor', pick_color(S, 'accent'), 'MarkerEdgeColor', 'none');
H.label_points(ax1, D.stations, D.station_labels, pick_color(S, 'accent'));
hold(ax1, 'off');
axis(ax1, 'equal');
xlim(ax1, D.view_center(1) + [-D.half_overview, D.half_overview]);
ylim(ax1, D.view_center(2) + [-D.half_overview, D.half_overview]);
xlabel(ax1, 'x / m');
ylabel(ax1, 'y / m');
legend(ax1, [hw(1), hr], D.legend1, 'Location', 'southoutside', ...
'Orientation', 'horizontal');
% 右:定位区域放大
ax2 = nexttile(t);
hold(ax2, 'on');
for i = 1:size(D.zoom_wedges, 1)
H.wedge(ax2, squeeze(D.zoom_wedges(i, :, :)), pick_color(S, 'primary'), 0.25);
end
H.poly(ax2, D.zoom_region, pick_color(S, 'accent'), 1, 'none', 0.5);
hd = H.circle(ax2, D.dc_center, D.dc_radius, pick_color(S, 'violet'), 1.2, '--');
hm = H.circle(ax2, D.mec_center, D.mec_radius, pick_color(S, 'success'), 1.4, '-');
H.marker(ax2, D.dc_center, pick_color(S, 'violet'), 5, true);
H.marker(ax2, D.mec_center, pick_color(S, 'success'), 5, true);
hold(ax2, 'off');
axis(ax2, 'equal');
xlim(ax2, D.zoom_center(1) + [-D.zoom_half, D.zoom_half]);
ylim(ax2, D.zoom_center(2) + [-D.zoom_half, D.zoom_half]);
xlabel(ax2, 'x / m');
ylabel(ax2, 'y / m');
legend(ax2, [hd, hm], D.legend2, 'Location', 'southoutside', ...
'Orientation', 'horizontal');
fig_save(fig, S, 'geo-q1-convex-intersection-zoom.png');
end