把全景圖像貼在一個固定半徑的三維球體上,這樣該視點空間就建立起來了。這里的固定半徑對應固
定的焦距。
三維球體的半徑為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坐標的轉化。
--------------------------------------------------
自己的理解:
如果一張圖的分辨率是200x100,那么圖片中任意像素,對應到球形直角坐標系的坐標是多少呢?
假設該任意像素位置為(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(θ)