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