How to get the mouse coordinates in a 3D spherical plot?

I plot the globe in 3D, and would like to get the latitude and longtitude of the current mouse position.
I tried to use get(gca,'CurrentPoint'), and I don't know how to map those coordinates to the equivalent latitude and longtitude on the map. I think the camera view has some effect as well.
figure('units','normalized','outerposition',[0 0 1 1]);
h=axesm ('globe','Grid', 'on');
axis off;
base = zeros(180,360); baseref = [1 90 0];
geoshow(base,baseref,'FaceColor','white')
load coast; % load all the map lines
plotm(lat, long); % plot the world maps
view([90 0 0])

 Respuesta aceptada

darova
darova el 5 de Mayo de 2019
If you have x,y,z coordinates use spherical system coordinate:
theta is longitude (from equator), phi - latitude
Latitude:
lat1 = asind(z); % asin() [0 .. 90]degree
Longitude
t = asind(y/cosd(lat1));
Choose angle for longitude (0 .. 360)
t = [t, 180-t, 180+t, 360-t];
x1 = cosd(t)*cosd(lat1);
y1 = sind(t)*cosd(lat1);
long1 = t( abs(x-x1+y-y1) < 1e-3 );

3 comentarios

Thank you Darova, I like the way that you described for finding the longitude angle.
I tried the code, but unfortunately, it is not working well. I think it is an issue of finding the correct x,y,z.
I think the correct x,y,z, should be those inside the globe. While the get current point function returns the external x,y,z of the plotted 3D shape.
darova
darova el 5 de Mayo de 2019
I picked some points with Data Cursor and export them to workspace
Thank you Darova, I understand now why it works compared to what I was testing.
I think the issue now is only about finding a continues way of mapping the current mouse location to its equivalent data cursor values. The globe projection makes it very different.

Iniciar sesión para comentar.

Más respuestas (0)

Preguntada:

el 5 de Mayo de 2019

Comentada:

el 7 de Mayo de 2019

Community Treasure Hunt

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

Start Hunting!

Translated by