给定例如6000px x 3000px(展宽360度宽180度高)的平坦(等矩形全景)图像。我如何将x = -10,y = -10转换为球形坐标(平移/倾斜或垂直/水平偏移),其中图像中心的水平/垂直偏移量为0?将x/y坐标转换为球形
是否可以计算出这个值,或者是否需要其他变量,如半径,距离或z坐标?
编辑: 我有什么至今:
def self.translate_xy_to_spherical(x, y)
h = (x/(6000/360)) - 180
v = ((y/(3000/180)) - 90)/- 1
[h, v]
end
def self.translate_spherical_to_xy(h, v)
x = ((h + 180) * (6000/360))
y = ((v * -1) + 90) * (3000/ 180)
[x, y]
end
如果我把0,0在第一种方法,我得到-180,90这是正确的。但是,如果我设置了3000,0,我预计为0,90,但我得到7,90。与其他公式(xy到球形)一样。当我输入0,0时,我预计3000,1500,但我得到2880x1440px。有一个小的偏移量,很可能是因为我用直线计算。
更新:答案
我已经更新从下面的答案采取帐户程度可能大于360度。我用模来解决这个问题:
IMAGE_WIDTH = 6000
IMAGE_HEIGHT = 3000
def self.translate_xy_to_spherical(x, y)
h = (x/(IMAGE_WIDTH/360.0)) - 180
v = ((y/(IMAGE_HEIGHT/180.0)) - 90)/-1
[h, v]
end
def self.translate_spherical_to_xy(h, v)
x = (((h % 360) + 180) * (IMAGE_WIDTH/360.0))
y = (((v % 180) * -1) + 90) * (IMAGE_HEIGHT/ 180.0)
[x, y]
end
您是否想将平面图像映射到球体? –
是的,一个equarectangilar平面图像。 https://en.wikipedia.org/wiki/Equirectangular_projection – Jareish
为什么你不能使用维基百科的公式? –