calculate distance and angles between points in a grid

22 次查看(过去 30 天)
I have created a grid of this type where for each point I know the coordinates and each point of the grid is one degree both in latitude and in longitude. I therefore have to calculate the distance in km and the angle in degrees from the blue point (x = 14.75: y = 40.5) to all the other orange points.
I created a function to calculate the distances and angles between two points, but where I always have to enter the coordinate values and I would like to avoid this step. I wonder, is it possible to calculate the distances and angles for all these points without manually entering the coordinate values?
  3 个评论
Drishan Poovaya
Drishan Poovaya 2021-9-6
It would be helpful if you could share your function which you have created, as well as data of the orange grid you have created. It would then be possible to vectorize or maybe loop the function to calculate all the distances and angles
ELISABETTA BILLOTTA
编辑:darova 2021-9-8
this is the code:
A=load('plot_mappe_jacopo.txt'); %plottare i confini dei continenti!!!
plot(A(:,1),A(:,2));
hold on
clear;
cx = 14.75; % coordinata x punto centrale, x-coordinates = 50 (example)
cy = 40.5; % coordinata y punto centrale, y-coordinates = 25 (example)
plot(cx,cy,'bo'); % Your center point
hold on
longrd=0:1:30; %dimensione griglia
latgrd=25:1:55;
ic=0; %contatore
for i=1:length(latgrd) %matrice che contiene tutti i valori
for j=1:length(latgrd)
ic=ic+1;
lonlatgrd(ic,1)=longrd(i);
lonlatgrd(ic,2)=latgrd(j);
end
end
%figure()
plot(lonlatgrd(:,1),lonlatgrd(:,2),'.');

请先登录,再进行评论。

采纳的回答

Drishan Poovaya
Drishan Poovaya 2021-9-7
Based on the inromation you have provided, the below code should calculate the distance and angle for all 961 coordinates from cx and cy. I have made some small changes to your original code as well, it should run faster now that I have eliminated the for loop
cx = 14.75; % coordinata x punto centrale, x-coordinates = 50 (example)
cy = 40.5; % coordinata y punto centrale, y-coordinates = 25 (example)
plot(cx,cy,'bo'); % Your center point
hold on
longrd=0:1:30; %dimensione griglia
latgrd=25:1:55;
[X ,Y] = ndgrid(longrd,latgrd);
X = reshape(X.',1,[]);
Y = reshape(Y.',1,[]);
lonlatgrd(:,1) = X';
lonlatgrd(:,2) = Y'
%figure()
plot(lonlatgrd(:,1),lonlatgrd(:,2),'.');
%sqrt((x-x1)^2 + (y-y1)^2)
D1 = X - cx;
D2 = Y - cy;
D1 = D1.*D1;
D2 = D2.*D2;
distance = sqrt(D1+D2);
%angle = tan(y-y1/x-x1);
D1 = X - cx;
D2 = Y - cy;
angle = tan(D2./D1);

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Computational Geometry 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by