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

前端 未结 3 1633
误落风尘
误落风尘 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: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.)

提交回复
热议问题