如何计算不同位置和固定坐标之间的距离?

How do I calculate the distances between a varied location and fixed coordinates?

我有四个补给站 (S1, S2, S3 S4) 和终点 (EU) 在网格上有固定坐标如下。

% Grid Definition
n = 10;             % Number of grids in the x-direction
x = 50;             % Dimension of a grid in the x-direction
k = 8;              % Number of grids in the y-direction
y = 50;             % Dimension of a grid in the x-direction
% Location of stations (coordinates)
S1 = [100 20];
S2 = [20 150];
S3 = [50 450];
S4 = [150 450];
% Location of the End User
EU = [7000 200];

配送中心 (DC) 从四个站点收集物资并将其运送到欧盟。从DCA点的距离固定为100米。目的是改变 DC 的位置( 而其他的具有固定坐标 )。如何编写代码以 计算每个位置从 S1、S2、S3、S4 到 DC 和 (d5) 点 A 到 EU 的距离 (d1、d2、d3、d4) DC。我对 Matlab 还是个新手,似乎还不能弄明白。

请检查以下代码。由于根据您的信息,A 和 DC 位置都不固定,因此我暂时假设 A 是固定的。如果它不符合您的要求,请告诉我。

clear all;

s1 = [100 20];
s2 = [20 150];
s3 = [50 450];
s4 = [150 450];
s = [s1; s2; s3; s4];
eu = [7000 200];
a = [5000 200];
d = 200;
plot(s(:,1),s(:,2),'r*',a(1,1),a(1,2),'g*',eu(1,1),eu(1,2),'b*');
hold on;
axis equal;

for ang = 0:pi/4:2*pi
    dc = [a(1,1)+d*sin(ang) a(1,2)+d*cos(ang)];
    plot(dc(1,1),dc(1,2),'ro');
    d1((ang/(pi/4))+1) = pdist([s1; dc],'euclidean');
    d2((ang/(pi/4))+1) = pdist([s2; dc],'euclidean');
    d3((ang/(pi/4))+1) = pdist([s3; dc],'euclidean');
    d4((ang/(pi/4))+1) = pdist([s4; dc],'euclidean');
    d5((ang/(pi/4))+1) = pdist([a; eu],'euclidean');
end

legend('S', 'A', 'EU', 'DC');
hold off;
xlabel('x');
ylabel('y');
xlim([0 7000]);
ylim([-500 2000]);
title('Center locations');

angx = [0:pi/4:2*pi];
figure;
plot(angx,d1,'r.:',angx,d2,'ro:',angx,d3,'r+:',angx,d4,'r*:',angx,d5,'bd--');
legend('d1', 'd2', 'd3', 'd4','d5');
xlabel('angle (rad)');
ylabel('distance (m)');
xlim([0 2*pi]);
ylim([1500 5500]);
set(gca,'XTick',0:pi/4:2*pi);
title('Distance vs. location');

职位

距离