Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how map 2d grid points (x,y) onto sphere as 3d points (x,y,z)

I have a set of 2d grid points (x,y) that I want to map/project onto a sphere as 3d points (x,y,z).

I realize there will be some warping towards the poles as abs(y) increases but my grid patch will only cover a portion of the sphere near the equator so severe warping will be avoided.

I'm having trouble finding the right equations for that.

like image 496
milkplus Avatar asked Oct 04 '12 17:10

milkplus


2 Answers

Paraphrased from the wikipedia article on Mercator projection:

Given a "mapping sphere" of radius R,
the Mercator projection (x,y) of a given latitude and longitude is:
   x = R * longitude
   y = R * log( tan( (latitude + pi/2)/2 ) )

and the inverse mapping of a given map location (x,y) is:
  longitude = x / R
  latitude = 2 * atan(exp(y/R)) - pi/2

To get the 3D coordinates from the result of the inverse mapping:

Given longitude and latitude on a sphere of radius S,
the 3D coordinates P = (P.x, P.y, P.z) are:
  P.x = S * cos(latitude) * cos(longitude)
  P.y = S * cos(latitude) * sin(longitude)
  P.z = S * sin(latitude)

(Note that the "map radius" and the "3D radius" will almost certainly have different values, so I have used different variable names.)

like image 100
comingstorm Avatar answered Sep 28 '22 11:09

comingstorm


I suppose that your (x,y) on the sphere are latitude, longitude.

If so, see http://tutorial.math.lamar.edu/Classes/CalcII/SphericalCoords.aspx.

enter image description here

There:

phi = 90 degree - latitude

theta = longitude

rho = radius of your sphere.

like image 37
farfareast Avatar answered Sep 28 '22 09:09

farfareast