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

前端 未结 3 1630
误落风尘
误落风尘 2020-11-29 06:23

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)

相关标签:
3条回答
  • 2020-11-29 06:35

    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.

    0 讨论(0)
  • 2020-11-29 06:53

    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.)

    0 讨论(0)
  • 2020-11-29 06:54

    I would expect that you could use the inverse of any of a number of globe projections.

    Mercator is pretty good around the equator compared to other projections.

    Formulas are on the wiki page.
    http://en.wikipedia.org/wiki/Mercator_projection

    0 讨论(0)
提交回复
热议问题