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

2 vues (au cours des 30 derniers jours)
Heba El-Fiqi
Heba El-Fiqi le 5 Mai 2019
Commenté : Heba El-Fiqi le 7 Mai 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])

Réponse acceptée

darova
darova le 5 Mai 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 commentaires
darova
darova le 5 Mai 2019
I picked some points with Data Cursor and export them to workspace
Heba El-Fiqi
Heba El-Fiqi le 7 Mai 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.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by