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

2 visualizaciones (últimos 30 días)
Heba El-Fiqi
Heba El-Fiqi el 5 de Mayo de 2019
Comentada: Heba El-Fiqi el 7 de Mayo de 2019
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
darova
darova el 5 de Mayo de 2019
I picked some points with Data Cursor and export them to workspace
Heba El-Fiqi
Heba El-Fiqi el 7 de Mayo de 2019
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)

Community Treasure Hunt

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

Start Hunting!

Translated by