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

2 次查看(过去 30 天)
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])

采纳的回答

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

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

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

Start Hunting!

Translated by