代码之家  ›  专栏  ›  技术社区  ›  Lee Probert

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

  •  0
  • Lee Probert  · 技术社区  · 6 年前

    我有一个等边的360图像,它会在标准的x/y坐标空间中映射热点。

    在Unity中,这个图像将映射到一个球体,我将把热点定位到球体的内表面。

    我需要将这些笛卡尔坐标从球体的中心(相机将在那里)转换成一个球体的数学。

    1 回复  |  直到 6 年前
        1
  •  3
  •   MinosIllyrien    6 年前

    当然,彼得·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只是一个可以自由选择的常数。

    我希望这有帮助。

    推荐文章