# calculate distance and angles between points in a grid

29 views (last 30 days)

Show older comments

ELISABETTA BILLOTTA
on 3 Sep 2021

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 Comments

Alamanda Ponappa Poovaya
on 6 Sep 2021

### Accepted Answer

Alamanda Ponappa Poovaya
on 7 Sep 2021

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 Comments

### More Answers (0)

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!