123
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
function fig_geo_q1_counterexample()
|
||||
%FIG_GEO_Q1_COUNTEREXAMPLE 问题一:等边三角形布站时直径圆不覆盖定位区域的反例。
|
||||
|
||||
S = fig_style();
|
||||
D = load_data(S, 'geo_q1_counterexample');
|
||||
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-diameter-circle-counterexample.png');
|
||||
end
|
||||
Reference in New Issue
Block a user