如何在360图像上将笛卡尔坐标转换为热点的球坐标

时间:2019-02-03 16:44:07

标签: unity3d math vector 360-virtual-reality

我有一个等角360度图像,它将在标准X / Y坐标空间中将热点映射到其上。

在Unity中,此图像将被映射到一个球体,而我会将热点定位到该球体的内表面。

我需要数学运算法则以将这些笛卡尔坐标从球的中心(相机将位于的位置)转换为球面。

1 个答案:

答案 0 :(得分:3)

当然,尽管有一种简单的标准方法可以进行等边逆投影,但彼得·O。是对的。

有两种主要的书​​写球形坐标的方法,即“数学”和“物理”。唯一的区别是坐标的命名。请参见本文顶部的两个坐标系图示:https://en.wikipedia.org/wiki/Spherical_coordinate_system

我假设我们使用数学上的数学公式,其中在x-y平面中的θ为(x,y)-z平面的φ。然后,投影就是:

θ=2π* x / w-π,其中w是图像的宽度,x是像素的x位置。这将沿球体中的x轴将图像中点定位,这可能是首选。如果坐标系取[0,2π]范围内的值,则应改为(2π* x / w +π)%2π。

φ=π* y / h,其中h是图像的高度,y是像素的y位置。

当然,r只是一个可以自由选择的常数。

我希望这会有所帮助。