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

How to convert cartesian to spherical coordinates for hotspots on a 360 image

我有一个等距柱状 360 图像,它将在标准 X/Y 坐标 space.

中映射热点

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

我需要数学将这些笛卡尔坐标从球体中心(相机所在的位置)转换为球体。

当然,Peter O. 是对的,尽管有一种简单的标准方法可以执行逆等角投影。

球坐标的书写方式主要有两种,'mathematical'和'physical'。唯一的区别是坐标的命名。请参阅本文顶部的两个坐标系插图: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只是一个可以自由选择的常数

希望对您有所帮助。