123
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
function fig_geo_q2_safe_disk()
|
||||
%FIG_GEO_Q2_SAFE_DISK 问题二:截断角域外接圆与保证接收的安全候选盘。
|
||||
|
||||
S = fig_style();
|
||||
D = load_data(S, 'geo_q2');
|
||||
H = geom_helpers();
|
||||
fig = figure('Color', 'w', 'Visible', 'off');
|
||||
t = tiledlayout(fig, 1, 2, 'TileSpacing', 'compact', 'Padding', 'compact');
|
||||
|
||||
% 左:真实几何(Ω 内的角域与两个候选圆)
|
||||
ax1 = nexttile(t);
|
||||
hold(ax1, 'on');
|
||||
H.circle(ax1, [0 0], D.omega_r, pick_color(S, 'primary'), 1.2, '-');
|
||||
hw = H.wedge(ax1, D.wedge, pick_color(S, 'accent'), 0.25);
|
||||
hd = H.circle(ax1, D.c, D.a, pick_color(S, 'violet'), 1.2, '--');
|
||||
hs = H.disk(ax1, D.c, D.safe, pick_color(S, 'success'), 0.30, '-');
|
||||
H.marker(ax1, [0 0], pick_color(S, 'accent'), 6, true);
|
||||
H.marker(ax1, D.c, pick_color(S, 'violet'), 5, true);
|
||||
H.label_points(ax1, [0 0], {'s1'}, pick_color(S, 'accent'));
|
||||
H.label_points(ax1, D.c, {'c'}, pick_color(S, 'violet'));
|
||||
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, hd, hs], D.legend, 'Location', 'southoutside', ...
|
||||
'Orientation', 'horizontal');
|
||||
|
||||
% 右:半径分解 a + (1000 − a) = 1000 m
|
||||
ax2 = nexttile(t);
|
||||
hold(ax2, 'on');
|
||||
H.circle(ax2, [0 0], D.a, pick_color(S, 'violet'), 1.2, '--');
|
||||
H.disk(ax2, [0 0], D.safe, pick_color(S, 'success'), 0.30, '-');
|
||||
H.marker(ax2, [0 0], 'k', 5, true);
|
||||
ang = deg2rad(35);
|
||||
p_out = D.a * [cos(ang), sin(ang)];
|
||||
p_in = D.safe * [cos(-ang), sin(-ang)];
|
||||
H.arrow(ax2, [0 0], p_out, pick_color(S, 'violet'));
|
||||
H.arrow(ax2, [0 0], p_in, pick_color(S, 'success'));
|
||||
text(ax2, p_out(1) * 1.06, p_out(2) * 1.12, sprintf('a = %.1f m', D.a), ...
|
||||
'Color', pick_color(S, 'violet'), 'Interpreter', 'none');
|
||||
text(ax2, p_in(1) * 1.04, p_in(2) * 1.30, sprintf('1000 − a = %.1f m', D.safe), ...
|
||||
'Color', pick_color(S, 'success'), 'HorizontalAlignment', 'right', ...
|
||||
'Interpreter', 'none');
|
||||
text(ax2, -D.safe * 0.45, 0, 'c', 'Color', 'k', ...
|
||||
'HorizontalAlignment', 'right', 'VerticalAlignment', 'middle');
|
||||
hold(ax2, 'off');
|
||||
axis(ax2, 'equal');
|
||||
xlim(ax2, [-D.a * 1.15, D.a * 1.75]);
|
||||
ylim(ax2, [-D.a * 1.05, D.a * 1.05]);
|
||||
axis(ax2, 'off');
|
||||
|
||||
fig_save(fig, S, 'geo-q2-guaranteed-reception-disk.png');
|
||||
end
|
||||
Reference in New Issue
Block a user