把全景图像贴在一个固定半径的三维球体上,这样该视点空间就建立起来了。这里的固定半径对应固
定的焦距。
三维球体的半径为r,水平转动角度为h([0,2PI]),上下转动角度为p([-PI/2,PI/2]),所以球面上一
点的三维坐标sphere(x,y,z)=(r*cosp*cosh,r*cosp*sinh,r*sinp)。
反向变换有p=arcsin(z/r) ,h=arctan(y/x)。
当把p对应到纹理的V方向,把H对应到纹理的U方向,UV的范围都是[0,1]。在知道球面坐标x、y,z和半
径r以后,球面点对应的纹理坐标就是V=arcsin(z/r)/PI+0.5,U=arctan(y/x)/2/PI。
转自:http://blog.sina.com.cn/s/blog_4bbdad0801017yqs.html
前言
经纬度坐标和XYZ笛卡尔坐标的转换常常应用在有关全景图的研究方面,在看了几篇提案和论文后才理解了坐标的转换方法
正文
通过一张图来说明
按照我们直观的理解,会认为φ角是蓝色实线和y轴的夹角,θ角是XOZ平面的蓝色虚线和z轴的夹角。但实时上并不是这样。
我们先假设P=(φ,θ)对应为地理坐标中的经度和纬度,那么当P点位于球的顶端时,其纬度为90°;当P点位于球的赤道上时,其纬度应该为0°,也就是说,y轴其实是对应φ为90°的时候。(具体参照有图可更好的理解)
按照上面的结论,我们就可以写出下面的对应关系
与第一个图的坐标对应相同。至此我们就完成了经纬度坐标到XYZ坐标的转化。
————————————————–
自己的理解:
如果一张图的分辨率是200×100,那么图片中任意像素,对应到球形直角坐标系的坐标是多少呢?
假设该任意像素位置为(u,v),很明显u的取值范围为[0,200],v的取值范围为[0,100]
有上面文章的铺垫 φ角的取值范围是[-π/2,π/2],θ角的取值范围是[-π,π]
则任意像素位置(u,v)对应的φ角和θ角为
θ=[(u*2π)÷200]-π
φ=[(v*π)÷100]-π/2
代入到公式
得到三维坐标系的坐标(x,y,z)
x=cos(φ)sin(θ)
y=sin(φ)
z=cos(φ)cos(θ)