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.
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.)
I suppose that your (x,y) on the sphere are latitude, longitude.
If so, see http://tutorial.math.lamar.edu/Classes/CalcII/SphericalCoords.aspx.
There:
phi = 90 degree - latitude
theta = longitude
rho = radius of your sphere.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With