国产露脸精品国产沙发|极品妇被弄得99久九精品亚洲|亚洲va成精品在线播放人|日韩精品久久久免费观看

    
    

        <delect id="w59je"></delect>

            當(dāng)前位置:首頁 > 籃球資訊 > 正文內(nèi)容

            球諧光照——球諧函數(shù)

            杏彩體育2年前 (2022-12-17)籃球資訊75

            早在1877年,Norman Macleod Ferrers就專門寫了一本書來介紹球諧函數(shù),后面物理學(xué)家把實數(shù)球諧函數(shù)擴展到復(fù)平面上,在復(fù)變函數(shù)論中作為“特殊函數(shù)”來研究,它在物理以及計算化學(xué)上有重要的應(yīng)用,我們主要討論它在計算機圖形渲染上的應(yīng)用。

            球諧函數(shù)是拉普拉斯方程的分離rr變量后,角度部分通解的正交項,那本篇文章就從拉普拉斯方程開始介紹,直至找到我們想要的球諧函數(shù)。球諧函數(shù)有復(fù)數(shù)形式和實數(shù)形式,我們只關(guān)心它的實數(shù)形式。

            球諧函數(shù)有兩條重要的性質(zhì),正交完備性和旋轉(zhuǎn)不變性。球諧函數(shù)構(gòu)成的函數(shù)組,作為正交基,對信號進行投影和重建,例如[7]介紹的輻射度環(huán)境貼圖,通過9個系數(shù)就可以模擬一張環(huán)境貼圖的漫反射信號,無論是存儲還是計算,都有顯著的優(yōu)勢。當(dāng)然,本篇文章希望從數(shù)學(xué)的角度,來介紹球諧函數(shù),也受限于個人的數(shù)學(xué)能力,會忽略了一些復(fù)雜的推導(dǎo)過程。

            文章目錄:

            球諧始源球諧性質(zhì)附錄參考

            球諧始源

            球諧函數(shù)是拉普拉斯方程的分離rr變量后,角度部分通解的正交項。這部分將從拉普拉斯方程開始逐項推導(dǎo),得到最終我們想要知道的球諧函數(shù)。內(nèi)容主要參考“姚端正,梁家寶. 數(shù)學(xué)物理方法-第4版”和“顧樵. 數(shù)學(xué)物理方法”兩本書。

            球面坐標可以表示為

            (1){x=rsin?θcos?φy=rsin?θsin?φz=rcos?θ\left\{ \begin{matrix} x=r\sin \theta \cos \varphi \\ y=r\sin \theta \sin \varphi \\ z=r\cos \theta \\ \end{matrix} \right. \tag{1}\\

            三維空間下的拉普拉斯(Laplace)方程可以表示為

            (2)?2=?2?x2+?2?y2+?2?z2=0{{\nabla }^{\text{2}}}\text{=}\frac{{{\partial }^{2}}}{\partial {{x}^{2}}}+\frac{{{\partial }^{2}}}{\partial {{y}^{2}}}+\frac{{{\partial }^{2}}}{\partial {{z}^{2}}}=0 \tag{2}\\

            把球面坐標代入拉普拉斯方程(參見“Laplacian in Spherical Coordinates”),可以得到

            (3)1r2??r(r2?f?r)+1r2sin?θ??θ(sin?θ?f?θ)+1r2sin2θ?2f?φ2=0\frac{1}{{{r}^{2}}}\frac{\partial }{\partial r}\left( {{r}^{2}}\frac{\partial f}{\partial r} \right)+\frac{1}{{{r}^{2}}\sin \theta }\frac{\partial }{\partial \theta }\left( \sin \theta \frac{\partial f}{\partial \theta } \right)+\frac{1}{{{r}^{2}}{{\sin }^{2}}\theta }\frac{{{\partial }^{2}}f}{\partial {{\varphi }^{2}}}=0 \tag{3}\\

            我們的目標就是求解拉普拉斯方程的解。首先,把表示距離的變數(shù)rr跟表示方向的變數(shù)θ\thetaφ\varphi分離,即

            (4)f(r,θ,φ)=R(r)Y(θ,φ)f\left( r,\theta ,\varphi \right)=R\left( r \right)Y\left( \theta ,\varphi \right) \tag{4}\\

            Y(θ,φ)Y\left( \theta ,\varphi \right)表示角度部分,把等式(4)代入等式(3)可以得到

            Yr2??r(r2?R?r)+Rr2sin?θ??θ(sin?θ?Y?θ)+Rr2sin2θ?2Y?φ2=0\frac{Y}{{{r}^{2}}}\frac{\partial }{\partial r}\left( {{r}^{2}}\frac{\partial R}{\partial r} \right)+\frac{R}{{{r}^{2}}\sin \theta }\frac{\partial }{\partial \theta }\left( \sin \theta \frac{\partial Y}{\partial \theta } \right)+\frac{R}{{{r}^{2}}{{\sin }^{2}}\theta }\frac{{{\partial }^{2}}Y}{\partial {{\varphi }^{2}}}=0\\

            等式兩邊乘以r2/RY{{r}^{2}}/RY,并移項,可得

            1R??r(r2?R?r)=?1Ysin?θ??θ(sin?θ?Y?θ)?1Ysin2θ?2Y?φ2\frac{1}{R}\frac{\partial }{\partial r}\left( {{r}^{2}}\frac{\partial R}{\partial r} \right)=-\frac{1}{Y\sin \theta }\frac{\partial }{\partial \theta }\left( \sin \theta \frac{\partial Y}{\partial \theta } \right)-\frac{1}{Y{{\sin }^{2}}\theta }\frac{{{\partial }^{2}}Y}{\partial {{\varphi }^{2}}}\\

            左邊是rr的函數(shù),跟θ\thetaφ\varphi無關(guān);右邊是θ\thetaφ\varphi的函數(shù),跟rr無關(guān)。兩邊相等,顯然是不可能的。除非兩邊實際上是同一個常數(shù),通常把這個參數(shù)記為l(l+1)l\left( l+1 \right)。即

            1R??r(r2?R?r)=?1Ysin?θ??θ(sin?θ?Y?θ)?1Ysin2θ?2Y?φ2=l(l+1)\frac{1}{R}\frac{\partial }{\partial r}\left( {{r}^{2}}\frac{\partial R}{\partial r} \right)=-\frac{1}{Y\sin \theta }\frac{\partial }{\partial \theta }\left( \sin \theta \frac{\partial Y}{\partial \theta } \right)-\frac{1}{Y{{\sin }^{2}}\theta }\frac{{{\partial }^{2}}Y}{\partial {{\varphi }^{2}}}=l\left( l+1 \right)\\

            這就分解為兩個方程

            ??r(r2?R?r)?l(l+1)R=0\frac{\partial }{\partial r}\left( {{r}^{2}}\frac{\partial R}{\partial r} \right)-l\left( l+1 \right)R=0\\

            (5)1sin?θ??θ(sin?θ?Y?θ)+1sin2θ?2Y?φ2+l(l+1)Y=0\frac{1}{\sin \theta }\frac{\partial }{\partial \theta }\left( \sin \theta \frac{\partial Y}{\partial \theta } \right)+\frac{1}{{{\sin }^{2}}\theta }\frac{{{\partial }^{2}}Y}{\partial {{\varphi }^{2}}}+l\left( l+1 \right)Y=0 \tag{5}\\

            當(dāng)然,我們只關(guān)心角度部分的解,即方程(5)的解,這個方程也稱為球函數(shù)方程。進一步采用分離變數(shù)法,以

            Y(θ,φ)=Θ(θ)Φ(φ)Y\left( \theta ,\varphi \right)=\Theta \left( \theta \right)\Phi \left( \varphi \right)\\

            代入球函數(shù)方程,得

            Φsin?θ??θ(sin?θ?Θ?θ)+Θsin2θ?2Φ?φ2+l(l+1)ΘΦ=0\frac{\Phi }{\sin \theta }\frac{\partial }{\partial \theta }\left( \sin \theta \frac{\partial \Theta }{\partial \theta } \right)+\frac{\Theta }{{{\sin }^{2}}\theta }\frac{{{\partial }^{2}}\Phi }{\partial {{\varphi }^{2}}}+l\left( l+1 \right)\Theta \Phi =0\\

            在方程兩邊乘以sin2θ/ΦΘ{{\sin }^{2}}\theta /\Phi \Theta并移項,即可得

            sin?θΘ??θ(sin?θ?Θ?θ)+l(l+1)sin2θ=?1Φ?2Φ?φ2\frac{\sin \theta }{\Theta }\frac{\partial }{\partial \theta }\left( \sin \theta \frac{\partial \Theta }{\partial \theta } \right)+l\left( l+1 \right){{\sin }^{2}}\theta =-\frac{1}{\Phi }\frac{{{\partial }^{2}}\Phi }{\partial {{\varphi }^{2}}}\\

            左邊是θ\theta的函數(shù),跟φ\varphi無關(guān);右邊是φ\varphi 的函數(shù),跟θ\theta 無關(guān)。兩邊相等顯然是不可能的,除非兩邊實際上是同一個常數(shù),這個常數(shù)記作λ\lambda

            sin?θΘ??θ(sin?θ?Θ?θ)+l(l+1)sin2θ=?1Φ?2Φ?φ2=λ\frac{\sin \theta }{\Theta }\frac{\partial }{\partial \theta }\left( \sin \theta \frac{\partial \Theta }{\partial \theta } \right)+l\left( l+1 \right){{\sin }^{2}}\theta =-\frac{1}{\Phi }\frac{{{\partial }^{2}}\Phi }{\partial {{\varphi }^{2}}}=\lambda\\

            這就又分解為兩個常微分方程

            (7)?2Φ?φ2+λΦ=0\frac{{{\partial }^{2}}\Phi }{\partial {{\varphi }^{2}}}+\lambda \Phi =0 \tag{7}\\

            (8)sin?θ??θ(sin?θ?Θ?θ)+[l(l+1)sin2θ?λ]Θ=0\sin \theta \frac{\partial }{\partial \theta }\left( \sin \theta \frac{\partial \Theta }{\partial \theta } \right)+\left[ l\left( l+1 \right){{\sin }^{2}}\theta -\lambda \right]\Theta =0 \tag{8}\\

            對于常微分方程(7),它有一個隱含的“自然的周期條件”(Φ(φ+2π)=Φ(φ)\Phi \left( \varphi +2\pi \right)=\Phi \left( \varphi \right)),兩者構(gòu)成本征值問題。即

            (9)λ=m2,(m=0,±1,±2,?)\lambda ={{m}^{2}},\left( m=0,\pm 1,\pm 2,\cdots \right) \tag{9}\\

            它的周期解用復(fù)數(shù)形式,可以表示為

            (10)Φ(φ)=eimφ,m=0,±1,±2,?\Phi \left( \varphi \right)={{e}^{im\varphi }},m=0,\pm 1,\pm 2,\cdots \tag{10}\\

            嚴格來說,這里忽略了常數(shù)項,且是兩個cos和sin函數(shù)的混合,或者是兩個正負虛數(shù)的混合,但不影響最終的通解。

            復(fù)數(shù)形式在復(fù)變函數(shù)論里面,有一個如下所示的轉(zhuǎn)換關(guān)系,它們都是復(fù)平面上坐標的不同表現(xiàn)形式。由于本篇文章并不是為了嚴格的數(shù)學(xué)理論推導(dǎo),而是為了梳理球諧函數(shù)在計算機上從理論到應(yīng)用這條線,最終我們采用的是實數(shù)形式的球諧函數(shù),所以看看就可以了。

            cos?mφ+isin?mφ=eimφ\cos m\varphi +i\sin m\varphi ={{e}^{im\varphi }}\\

            再看常微分方程(8),它可以改寫為

            1sin?θ??θ(sin?θ?Θ?θ)+[l(l+1)?m2sin2θ]Θ=0\frac{1}{\sin \theta }\frac{\partial }{\partial \theta }\left( \sin \theta \frac{\partial \Theta }{\partial \theta } \right)+\left[ l\left( l+1 \right)-\frac{{{m}^{2}}}{{{\sin }^{2}}\theta } \right]\Theta =0\\

            設(shè)x=cos?θx=\cos \theta,則

            ?Θ?θ=?Θ?x?x?θ=?sin?θ?Θ?x\frac{\partial \Theta }{\partial \theta }=\frac{\partial \Theta }{\partial x}\frac{\partial x}{\partial \theta }=-\sin \theta \frac{\partial \Theta }{\partial x}\\

            代入上式,化簡可得

            (11)(1?x2)?2Θ?x2?2x?Θ?x+[l(l+1)?m21?x2]Θ=0\left( 1-{{x}^{2}} \right)\frac{{{\partial }^{2}}\Theta }{\partial {{x}^{2}}}-2x\frac{\partial \Theta }{\partial x}+\left[ l\left( l+1 \right)-\frac{{{m}^{2}}}{1-{{x}^{2}}} \right]\Theta =0 \tag{11}\\

            這個方程就是l次連帶勒讓德方程,也稱為締合勒讓德方程,其中,m=0m=0的特例,即

            (12)(1?x2)?2Θ?x2?2x?Θ?x+l(l+1)Θ=0\left( 1-{{x}^{2}} \right)\frac{{{\partial }^{2}}\Theta }{\partial {{x}^{2}}}-2x\frac{\partial \Theta }{\partial x}+l\left( l+1 \right)\Theta =0 \tag{12}\\

            叫作l次勒讓德方程。

            后面只考慮連帶勒讓德方程,它的解就稱為連帶勒讓德函數(shù),只有當(dāng)λ=l(l+1)\lambda =l\left( l+1 \right)l=0,1,?l=0,1,\cdots 時才有有界周期解,用Plm(x)P_{l}^{m}\left( x \right)表示,即

            (13)Θ(θ)=Plm(cos?θ){m=0,±1,?,±l}\Theta \left( \theta \right)=P_{l}^{m}\left( \cos \theta \right)\left\{ m=0,\pm 1,\cdots ,\pm l \right\} \tag{13}\\

            經(jīng)過數(shù)學(xué)家論證,連帶勒讓德函數(shù)表示為

            Pml(x)=(?1)m(1?x2)m22ll!dl+mdxl+m(x2?1)l

            P_{l}^{m}\left( x \right)=\frac{{{\left( -1 \right)}^{m}}{{\left( 1-{{x}^{2}} \right)}^{\frac{m}{2}}}}{{{2}^{l}}l!}\frac{{a5yegbt^{l+m}}}{d{{x}^{l+m}}}{{\left( {{x}^{2}}-1 \right)}^{l}} \tag{14}\\

            這叫稱為l次m階連帶勒讓德函數(shù),“次”的英文是“degree”,“階”的英文是“order”。當(dāng)l">m>l。連帶勒讓德函數(shù)里面有一個m+l次導(dǎo)數(shù)計算,在計算機上這個很難處理,但是有遞歸關(guān)系[3],即

            \left\{ \begin{aligned} & \left( l-m \right)P_{l}^{m}\left( x \right)=x\left( 2l-1 \right)P_{l-1}^{m}\left( x \right)-\left( l+m-1 \right)P_{l-2}^{m}\left( x \right) \\ & P_{m}^{m}\left( x \right)={{\left( -1 \right)}^{m}}\left( 2m-1 \right)!!{{\left( 1-{{x}^{2}} \right)}^{m/2}} \\ & P_{m+1}^{m}\left( x \right)=x\left( 2m+1 \right)P_{m}^{m}\left( x \right) \\ \end{aligned} \right. \tag{15}\\

            兩個!!表示雙階乘,即\left( 2m-1 \right)!!=1\cdot 3\cdot 5\cdots \left( 2m-1 \right)。

            連帶勒讓德函數(shù)的遞歸關(guān)系,保證了計算機實現(xiàn)的基礎(chǔ)。

            此外,再給一個l次m階連帶勒讓德函數(shù)的關(guān)系等式

            P_{l}^{m}\left( x \right)={{\left( -1 \right)}^{m}}\frac{\left( l+m \right)!}{\left( l-m \right)!}P_{l}^{-m}\left( x \right) \tag{16}\\

            回到球函數(shù)方程(5)的求解,它的Y\left( \theta ,\varphi \right)通解的復(fù)數(shù)形式表示為

            Y\left( \theta ,\varphi \right)=\sum\limits_{l=0}^{\infty }{\sum\limits_{k=-l}^{l}{P_{l}^{k}\left( \cos \theta \right){{e}^{im\varphi }}}},m=0,\pm 1,\pm 2,\cdots \tag{17}\\

            嚴格來說,由于\Phi \left( \varphi \right)忽略了常數(shù)項,這里也是忽略常數(shù)項的情況。

            一般的l次m階球諧函數(shù){{Y}_{lm}}\left( \theta ,\varphi \right)的復(fù)數(shù)形式可以表示為

            {{Y}_{lm}}\left( \theta ,\varphi \right)={{P}_{lm}}\left( \cos \theta \right){{e}^{im\varphi }},m=0,\pm 1,\pm 2,\cdots \tag{18}\\

            l表示球諧函數(shù)的次數(shù),m表示球諧函數(shù)的階數(shù)

            球諧函數(shù)的模長可以表示為

            {{\left( N_{l}^{m} \right)}^{2}}={{\iint\limits_{S}{{{Y}_{lm}}\left( x \right)\left[ {{Y}_{lm}}\left( x \right) \right]}}^{*}}\sin \theta d\theta d\varphi =\frac{2}{2l+1}\frac{\left( l+\left| m \right| \right)!}{\left( l-\left| m \right| \right)!}2\pi\\

            歸一化的球諧函數(shù)Y_{l}^{m}\left( \theta ,\varphi \right)的復(fù)數(shù)形式可以表示為

            Y_{l}^{m}\left( \theta ,\varphi \right)=K_{l}^{m}{{Y}_{lm}}\left( \theta ,\varphi \right) \tag{19}\\

            其中

            K_{l}^{m}=\frac{1}{N_{l}^{m}}=\sqrt{\frac{2l+1}{4\pi }\frac{\left( l-\left| m \right| \right)!}{\left( l+\left| m \right| \right)!}} \tag{20}\\

            注意區(qū)分兩種數(shù)學(xué)表示的含義,{{Y}_{lm}}\left( \theta ,\varphi \right)表示一般形式的球諧函數(shù),Y_{l}^{m}\left( \theta ,\varphi \right)表示歸一化的球諧函數(shù)。

            當(dāng)m>0時采用實數(shù)cos部分,當(dāng)m<0時采用虛數(shù)sin部分,則歸一化的球諧函數(shù)的實數(shù)形式可以表示為

            0 \\ \sqrt{2}K_{l}^{m}\sin \left( -m\varphi \right)P_{l}^{-m}\left( \cos \theta \right) & m<0>Y_{l}^{m}\left( \theta ,\varphi \right)=\left\{ \begin{matrix} \sqrt{2}K_{l}^{m}\cos \left( m\varphi \right)P_{l}^{m}\left( \cos \theta \right) & m>0 \\ \sqrt{2}K_{l}^{m}\sin \left( -m\varphi \right)P_{l}^{-m}\left( \cos \theta \right) & m<0 \\ K_{l}^{0}P_{l}^{m}\left( \cos \theta \right) & m=0 \\ \end{matrix} \right. \tag{21}

            根據(jù)上述計算公式,可以得到前面4次的球諧函數(shù),為

            前4次球諧函數(shù)

            參見[6],已經(jīng)推導(dǎo)出前6次的球諧函數(shù)。

            球諧函數(shù)可視化,前面幾次的三維圖像如圖1所示

            圖1. 前4次的球諧函數(shù)三維圖像

            至此,你應(yīng)該理解兩條重要結(jié)論:

            球諧函數(shù)是拉普拉斯方程分離r變量后,角度部分通解的正交項(后面介紹正交性)。如何計算球諧函數(shù),可以參見等式(15)(20)(21)。

            球諧性質(zhì)

            接著,討論歸一化的球諧函數(shù)的性質(zhì),它具備兩條重要的性質(zhì)構(gòu)成了它應(yīng)用的基石:

            正交完備性旋轉(zhuǎn)不變性

            正交完備性

            對于任意兩個歸一化的球諧函數(shù)在球面上的積分有

            \iint\limits_{S}{Y_{l}^{m}\left( \theta ,\varphi \right)Y_{k}^{n}\left( \theta ,\varphi \right)\sin \theta d\theta d\varphi }=\left\{ \begin{matrix} 0 & m\ne n,or,l\ne k \\ 1 & m=n,l=k \\ \end{matrix} \right. \tag{21}\\

            這就表示由球諧函數(shù)構(gòu)成的函數(shù)組\left\{ Y_{l}^{m}\left( \theta ,\varphi \right) \right\}是正交歸一化的。

            以某一正交歸一函數(shù)組為基,把一個給定的函數(shù)用這些函數(shù)的線性組合來表示,這就是一種重要的展開,這種用正交函數(shù)組展開為級數(shù)的一個顯著的例子就是傅里葉變換。

            任意一個球面函數(shù)f\left( \theta ,\varphi \right)可以用正交歸一的球函數(shù)Y_{l}^{m}\left( \theta ,\varphi \right)進行展開,這種展開類似于傅里葉展開,稱為廣義傅里葉展開

            f\left( \theta ,\varphi \right)=\sum\limits_{l=0}^{\infty }{\sum\limits_{m=-l}^{l}{C_{l}^{m}Y_{l}^{m}\left( \theta ,\varphi \right)}} \tag{22}\\

            其中,廣義傅里葉系數(shù)C_{l}^{m}

            C_{l}^{m}=\int_{0}^{2\pi }{\int_{0}^{\pi }{f\left( \theta ,\varphi \right)Y_{l}^{m}\left( \theta ,\varphi \right)\sin \theta d\theta d\varphi }} \tag{23}\\

            當(dāng)次數(shù)l\to \infty 的時候,展開的級數(shù)和會平均收斂于f\left(\theta ,\varphi \right)。換句話說,當(dāng)次數(shù)l越大,那么級數(shù)和就會越趨近于被展開的函數(shù)f\left(\theta ,\varphi \right),就稱\left\{ Y_{l}^{m}\left( \theta ,\varphi \right) \right\}為完備函數(shù)組。平均收斂,并不代表收斂,只是表示趨近于的含義。

            從計算機的角度來說,如等式(22)所示的函數(shù)展開,n的取值不可能是無窮大,往往取一個給定系數(shù),則可以確定球諧函數(shù)組,例如n=2,那么球諧函數(shù)組就是

            \left\{ Y_{l}^{m}\left( \theta ,\varphi \right) \right\}=\left\{ Y_{0}^{0},Y_{1}^{-1},Y_{1}^{0},Y_{1}^{1} \right\}\\

            任意給定n,得到的球諧函數(shù)組的個數(shù)為

            S=1+\text{3}+5+\cdots 2n-1={{n}^{2}}\\

            那么,廣義傅里葉系數(shù)相當(dāng)于這樣一個排列

            C_{0}^{0},C_{1}^{-1},C_{1}^{0},C_{1}^{1},C_{2}^{-2},C_{2}^{-1},\cdots\\

            類似的球諧函數(shù)也可以構(gòu)成這樣一個類似的排列,若我們用一個普通的系數(shù){{c}_{k}}來表示上面的廣義傅里葉系數(shù),用一個函數(shù){{y}_{k}}\left( \theta ,\varphi \right)來表示球諧函數(shù),那么等式(22)可以換成另外一種形式

            f\left( \theta ,\varphi \right)=\sum\limits_{k=0}^{{{n}^{2}}-1}{{{c}_{k}}{{y}_{k}}\left( \theta ,\varphi \right)} \tag{24}\\

            這種形式的展開與等式(22)是完全一樣的,它只是把球諧函數(shù)的次數(shù)展開,用一個系數(shù)來表示,但是它隱藏了一個條件:取的系數(shù)個數(shù)必需是{{n}^{2}}

            回過來,球諧函數(shù)組相當(dāng)于一組正交基,將函數(shù)f\left( \theta ,\varphi \right)表示為這組正交基的線性組合,生成線性組合系數(shù)的過程就稱為投影(Projection),例如一個函數(shù)可以表示為

            f\left( \theta ,\varphi \right)\approx aY_{0}^{0}+bY_{1}^{-1}+cY_{1}^{0}+dY_{1}^{1}\\

            生成系數(shù)\left\{ a,b,c,d \right\}的過程,就是投影,等式(23)就確定了投影的方法。相反,利用這組系數(shù)和正交基組合,得到原函數(shù)的過程,就稱為重建(Reconstruction)。

            投影的過程就是計算函數(shù)積分,計算消耗較大,可以采用離線處理來生成廣義傅里葉系數(shù);在實時渲染時,就要簡單的線性組合,就可以重建原始函數(shù)。當(dāng)然,由于是有限個系數(shù),就必然存在誤差。

            我們再來看下連帶勒讓德函數(shù),如圖2所示,隨著次數(shù)的增加,函數(shù)的振動頻率會越快。對于函數(shù)的展開而言,振動頻率越大的基底,它就只能表示越高頻的信息,往往一個函數(shù)里面的高頻信息量是較少的。

            圖2. 連帶勒讓德函數(shù)曲線圖,次數(shù)越大,振頻越快

            類似的,球諧函數(shù)也具備這種隨著次數(shù)增加,振動頻率增加的的特性。它就使得n的取值不需要很大時,就可以得到很好的重建效果,當(dāng)然只能還原出低頻信息。根據(jù)Robin[3]得到的數(shù)據(jù),如圖3所示,當(dāng)n > 6時,就能還原出整體效果,但是邊緣棱角這些高頻信息是無法還原出來的。

            圖3. 不同n取值下球諧函數(shù)的重建效果

            由球諧函數(shù)構(gòu)成的函數(shù)組構(gòu)成正交歸一的基底,對球面上的函數(shù)進行投影和重建,也就是廣義傅里葉展開,數(shù)學(xué)上的完備性,保證了展開結(jié)果會趨近于被展開的函數(shù)。

            旋轉(zhuǎn)不變性

            第一個問題是:什么叫旋轉(zhuǎn)不變性。

            任意一個球面上的函數(shù)f\left( \theta ,\varphi \right)可以用球諧函數(shù)組作為基底展開,需要根據(jù)等式(23)計算廣義傅里葉系數(shù)C_{l}^{m}。如果我們對原函數(shù)進行旋轉(zhuǎn)操作的話,設(shè)旋轉(zhuǎn)變換表示為R\left( \theta ,\varphi \right),我們就得到了一個新的函數(shù)f\left( R\left( \theta ,\varphi \right) \right)。對新函數(shù)進行展開的話,我們需要重新計算廣義傅里葉系數(shù),設(shè)為B_{l}^{m},這就有點為難了。在圖形渲染中,廣義傅里葉系數(shù)的生成是離線實現(xiàn)的,它的消耗很大,這就表示,一旦光源發(fā)生了旋轉(zhuǎn)后,由于原函數(shù)的改變導(dǎo)致提前生成的系數(shù)失效。旋轉(zhuǎn)不變性,表示原函數(shù)發(fā)生了旋轉(zhuǎn),只需要對生成的廣義傅里葉系數(shù)進行變換,就能保證變換后的系數(shù)能等價還原出新函數(shù)。在圖形渲染上的表現(xiàn)就是,當(dāng)光源發(fā)生旋轉(zhuǎn)后,我們只要同步的計算出變換后的廣義傅里葉系數(shù),就能保證畫面的光照效果不會抖動跳變。旋轉(zhuǎn)不變性,并不是表示源函數(shù)發(fā)生旋轉(zhuǎn)后,對重建結(jié)果沒有影響,而是表示通過對系數(shù)與匹配的旋轉(zhuǎn)進行變換后,能等價的還原出旋轉(zhuǎn)后的函數(shù)。

            舉個[6]實驗的例子,如圖4所示,球諧函數(shù)表示的光照發(fā)生旋轉(zhuǎn)后,仍然能等價重建新的變換函數(shù),但是采用Ambient Cube的方法效果就出現(xiàn)了異常。

            圖4. SH表示球諧基底,HL2表示Ambient Cube基底

            第二個問題是:怎么對生成的系數(shù)進行變換。

            針對這個問題,這里寫些自己的理解,不做深入的研究。

            對于l次球諧函數(shù),就會有2l + 1個系數(shù),表示為

            {{C}_{l}}=\left\{ C_{l}^{-l},C_{l}^{-l+1},\cdots ,C_{l}^{l-1},C_{l}^{l} \right\} \tag{25}\\

            設(shè)變換矩陣為R_{SH}^{l},它是一個(2l + 1)*(2l + 1)的矩陣,那么系數(shù)的變換就可以表示為

            B_{l}^{m}=\sum\limits_{k=-l}^{k=l}{M_{l}^{m,k}C_{l}^{k}} \tag{26}\\

            或者用向量與矩陣的乘積形式,表示為

            {{B}_{l}}={{C}_{l}}\cdot R_{SH}^{l} \tag{27}\\

            那么,經(jīng)過旋轉(zhuǎn)變換后的函數(shù)的展開就可以表示為

            f\left( R\left( \theta ,\varphi \right) \right)=\sum\limits_{l=0}^{\infty }{\sum\limits_{m=-l}^{l}{B_{l}^{m}Y_{l}^{m}\left( \theta ,\varphi \right)}} \tag{28}\\

            唯一的區(qū)別就是,系數(shù)由{{C}_{l}}變成了{{B}_{l}}。

            想表達的一點是,系數(shù)的變換是基于球諧函數(shù)的次數(shù),即第3次球諧函數(shù)的系數(shù){{B}_{3}},只能由第3次球諧函數(shù)的系數(shù){{C}_{3}}變換而來。

            若取前3次的球諧函數(shù)構(gòu)成正交基,函數(shù)組共有0,1,2次三類球諧函數(shù),若采用等式(24)的形式,則3個子矩陣需要整合成一個完整的變換矩陣,對于前3次球諧函數(shù)的例子,就組成一個9x9的變換矩陣,它的形狀如下所示。

            9x9的球諧系數(shù)變換矩陣

            考慮低維的情況[3]。旋轉(zhuǎn)可以用旋轉(zhuǎn)矩陣、歐拉角、四元數(shù)等方式表示,任意一個旋轉(zhuǎn)矩陣R可以用{{Z}_{\alpha }}{{Y}_{\beta }}{{Z}_{\gamma }}型的歐拉角表示,它們間的變換關(guān)系[5]表示為

            \left( \begin{matrix} {{R}_{0,0}} & {{R}_{0,1}} & {{R}_{0,2}} \\ {{R}_{1,0}} & {{R}_{1,1}} & {{R}_{1,2}} \\ {{R}_{2,0}} & {{R}_{2,1}} & {{R}_{2,2}} \\ \end{matrix} \right)=\left( \begin{matrix} {{c}_{\alpha }}{{c}_{\beta }}{{c}_{\gamma }}-{{s}_{\alpha }}{{s}_{\gamma }} & {{c}_{\alpha }}{{s}_{\gamma }}+{{s}_{\alpha }}{{c}_{\beta }}{{c}_{\gamma }} & -{{s}_{\beta }}{{c}_{\gamma }} \\ -{{s}_{\alpha }}{{c}_{\gamma }}-{{c}_{\alpha }}{{c}_{\beta }}{{s}_{\gamma }} & {{c}_{\alpha }}{{c}_{\gamma }}-{{s}_{\alpha }}{{c}_{\beta }}{{s}_{\gamma }} & {{s}_{\beta }}{{s}_{\gamma }} \\ {{c}_{\alpha }}{{s}_{\beta }} & {{s}_{\alpha }}{{s}_{\beta }} & {{c}_{\beta }} \\ \end{matrix} \right) \tag{29}\\

            其中,c表示cos,s表示sin。

            有了這個變換關(guān)系后,就很容易計算出歐拉角\alpha ,\beta ,\gamma,表示為

            \begin{aligned} & \sin \beta =\sqrt{1-R_{2,2}^{2}} \\ & \left\{ \begin{aligned} & \alpha \text{=atan2f}\left( {{R}_{2,1}}/\sin \beta ,{{R}_{2,0}}/\sin \beta \right) \\ & \beta =\text{atan2f}\left( \sin \beta ,{{R}_{2,2}} \right) \\ & \gamma =\text{atan2f}\left( {{R}_{1,2}}/\sin \beta ,-{{R}_{0,2}}/\sin \beta \right) \\ \end{aligned} \right. \\ \end{aligned}\\

            對于,{{R}_{2,2}}=1的退化情況,歐拉角表示為

            \left\{ \begin{aligned} & \alpha \text{=atan2f}\left( {{R}_{0,1}},{{R}_{0,0}} \right) \\ & \beta =0 \\ & \gamma =0 \\ \end{aligned} \right.\\

            那么,相應(yīng)l次的球諧系數(shù)的變換矩陣可以表示為

            R_{SH}^{l}\left( \alpha ,\beta ,\gamma \right)={{Z}_{\gamma }}{{Y}_{-90}}{{Z}_{\beta }}{{Y}_{+90}}{{Z}_{\alpha }}\\

            對于第0次的球諧變換矩陣為

            R_{SH}^{0}\left( \alpha ,\beta ,\gamma \right)=\left( 1 \right) \tag{30}\\

            其它維度的矩陣推導(dǎo)比較麻煩,就推導(dǎo)了第1次的球諧變換矩陣,它可以表示為

            R_{SH}^{1}\left( \alpha ,\beta ,\gamma \right)=\left( \begin{matrix} {{c}_{\alpha }}{{c}_{\gamma }}-{{s}_{\alpha }}{{c}_{\beta }}{{s}_{\gamma }} & -{{s}_{\beta }}{{s}_{\gamma }} & -{{s}_{\alpha }}{{c}_{\gamma }}-{{c}_{\alpha }}{{c}_{\beta }}{{s}_{\gamma }} \\ -{{s}_{\alpha }}{{s}_{\beta }} & {{c}_{\beta }} & -{{c}_{\alpha }}{{s}_{\beta }} \\ {{c}_{\alpha }}{{s}_{\gamma }}+{{s}_{\alpha }}{{c}_{\beta }}{{c}_{\gamma }} & {{s}_{\beta }}{{c}_{\gamma }} & {{c}_{\alpha }}{{c}_{\beta }}{{c}_{\gamma }}-{{s}_{\alpha }}{{s}_{\gamma }} \\ \end{matrix} \right)=\left( \begin{matrix} {{R}_{1,1}} & -{{R}_{1,2}} & {{R}_{1,0}} \\ -{{R}_{2,1}} & {{R}_{2,2}} & {{R}_{2,0}} \\ {{R}_{0,1}} & -{{R}_{0,2}} & {{R}_{0,0}} \\ \end{matrix} \right)\\

            變換矩陣R_{SH}^{l}的計算可以參見附錄D3D的實現(xiàn),實現(xiàn)了前6次的球諧系數(shù)的旋轉(zhuǎn),對于圖形渲染來說,已經(jīng)夠用了。

            對于高維矩陣的構(gòu)造方法非常的復(fù)雜,采用的是魏格納d矩陣(Wigner d-matrices),可以參見文獻[4]的討論,網(wǎng)上也有這個算法的高效實現(xiàn),有興趣可以研究研究,參見SHTns。

            附錄

            根據(jù)等式(15)的遞歸關(guān)系,就可以很容易計算出連帶勒讓德函數(shù)[3]。

            double P(int l,int m,double x) { // evaluate an Associated Legendre Polynomial P(l,m,x) at x double pmm = 1.0; if(m>0) { double somx2 = sqrt((1.0-x)*(1.0+x)); double fact = 1.0; for(int i=1; i<=m; i++) { pmm *= (-fact) * somx2; fact += 2.0; } } if(l==m) return pmm; double pmmp1 = x * (2.0*m+1.0) * pmm; if(l==m+1) return pmmp1; double pll = 0.0; for(int ll=m+2; ll<=l; ++ll) { pll = ( (2.0*ll-1.0)*x*pmmp1-(ll+m-1.0)*pmm ) / (ll-m); pmm = pmmp1; pmmp1 = pll; } return pll; }

            根據(jù)等式(20)(21),可以計算出球諧函數(shù)[3]。

            double K(int l, int m) { // renormalisation constant for SH function double temp = ((2.0*l+1.0)*factorial(l-m)) / (4.0*PI*factorial(l+m)); return sqrt(temp); } double SH(int l, int m, double theta, double phi) { // return a point sample of a Spherical Harmonic basis function // l is the band, range [0..N] // m in the range [-l..l] // theta in the range [0..Pi] // phi in the range [0..2*Pi] const double sqrt2 = sqrt(2.0); if(m==0) return K(l,0)*P(l,m,cos(theta)); else if(m>0) return sqrt2*K(l,m)*cos(m*phi)*P(l,m,cos(theta)); else return sqrt2*K(l,-m)*sin(-m*phi)*P(l,-m,cos(theta)); }

            在D3D中實現(xiàn)的球諧系數(shù)的旋轉(zhuǎn)D3DXSHRotate的實現(xiàn)為:

            FLOAT* WINAPI D3DXSHRotate(FLOAT *out, UINT order, const D3DXMATRIX *matrix, const FLOAT *in) { FLOAT alpha, beta, gamma, sinb, temp[36], temp1[36]; TRACE("out %p, order %u, matrix %p, in %p\n", out, order, matrix, in); out[0] = in[0]; if ((order > D3DXSH_MAXORDER) || (order < D3DXSH_MINORDER)) return out; if (order <= 3) { out[1] = matrix->u.m[1][1] * in[1] - matrix->u.m[2][1] * in[2] + matrix->u.m[0][1] * in[3]; out[2] = -matrix->u.m[1][2] * in[1] + matrix->u.m[2][2] * in[2] - matrix->u.m[0][2] * in[3]; out[3] = matrix->u.m[1][0] * in[1] - matrix->u.m[2][0] * in[2] + matrix->u.m[0][0] * in[3]; if (order == 3) { FLOAT coeff[]={ matrix->u.m[1][0] * matrix->u.m[0][0], matrix->u.m[1][1] * matrix->u.m[0][1], matrix->u.m[1][1] * matrix->u.m[2][1], matrix->u.m[1][0] * matrix->u.m[2][0], matrix->u.m[2][0] * matrix->u.m[2][0], matrix->u.m[2][1] * matrix->u.m[2][1], matrix->u.m[0][0] * matrix->u.m[2][0], matrix->u.m[0][1] * matrix->u.m[2][1], matrix->u.m[0][1] * matrix->u.m[0][1], matrix->u.m[1][0] * matrix->u.m[1][0], matrix->u.m[1][1] * matrix->u.m[1][1], matrix->u.m[0][0] * matrix->u.m[0][0], }; out[4] = (matrix->u.m[1][1] * matrix->u.m[0][0] + matrix->u.m[0][1] * matrix->u.m[1][0]) * in[4]; out[4] -= (matrix->u.m[1][0] * matrix->u.m[2][1] + matrix->u.m[1][1] * matrix->u.m[2][0]) * in[5]; out[4] += 1.7320508076f * matrix->u.m[2][0] * matrix->u.m[2][1] * in[6]; out[4] -= (matrix->u.m[0][1] * matrix->u.m[2][0] + matrix->u.m[0][0] * matrix->u.m[2][1]) * in[7]; out[4] += (matrix->u.m[0][0] * matrix->u.m[0][1] - matrix->u.m[1][0] * matrix->u.m[1][1]) * in[8]; out[5] = (matrix->u.m[1][1] * matrix->u.m[2][2] + matrix->u.m[1][2] * matrix->u.m[2][1]) * in[5]; out[5] -= (matrix->u.m[1][1] * matrix->u.m[0][2] + matrix->u.m[1][2] * matrix->u.m[0][1]) * in[4]; out[5] -= 1.7320508076f * matrix->u.m[2][2] * matrix->u.m[2][1] * in[6]; out[5] += (matrix->u.m[0][2] * matrix->u.m[2][1] + matrix->u.m[0][1] * matrix->u.m[2][2]) * in[7]; out[5] -= (matrix->u.m[0][1] * matrix->u.m[0][2] - matrix->u.m[1][1] * matrix->u.m[1][2]) * in[8]; out[6] = (matrix->u.m[2][2] * matrix->u.m[2][2] - 0.5f * (coeff[4] + coeff[5])) * in[6]; out[6] -= (0.5773502692f * (coeff[0] + coeff[1]) - 1.1547005384f * matrix->u.m[1][2] * matrix->u.m[0][2]) * in[4]; out[6] += (0.5773502692f * (coeff[2] + coeff[3]) - 1.1547005384f * matrix->u.m[1][2] * matrix->u.m[2][2]) * in[5]; out[6] += (0.5773502692f * (coeff[6] + coeff[7]) - 1.1547005384f * matrix->u.m[0][2] * matrix->u.m[2][2]) * in[7]; out[6] += (0.2886751347f * (coeff[9] - coeff[8] + coeff[10] - coeff[11]) - 0.5773502692f * (matrix->u.m[1][2] * matrix->u.m[1][2] - matrix->u.m[0][2] * matrix->u.m[0][2])) * in[8]; out[7] = (matrix->u.m[0][0] * matrix->u.m[2][2] + matrix->u.m[0][2] * matrix->u.m[2][0]) * in[7]; out[7] -= (matrix->u.m[1][0] * matrix->u.m[0][2] + matrix->u.m[1][2] * matrix->u.m[0][0]) * in[4]; out[7] += (matrix->u.m[1][0] * matrix->u.m[2][2] + matrix->u.m[1][2] * matrix->u.m[2][0]) * in[5]; out[7] -= 1.7320508076f * matrix->u.m[2][2] * matrix->u.m[2][0] * in[6]; out[7] -= (matrix->u.m[0][0] * matrix->u.m[0][2] - matrix->u.m[1][0] * matrix->u.m[1][2]) * in[8]; out[8] = 0.5f * (coeff[11] - coeff[8] - coeff[9] + coeff[10]) * in[8]; out[8] += (coeff[0] - coeff[1]) * in[4]; out[8] += (coeff[2] - coeff[3]) * in[5]; out[8] += 0.86602540f * (coeff[4] - coeff[5]) * in[6]; out[8] += (coeff[7] - coeff[6]) * in[7]; } return out; } if (fabsf(matrix->u.m[2][2]) != 1.0f) { sinb = sqrtf(1.0f - matrix->u.m[2][2] * matrix->u.m[2][2]); alpha = atan2f(matrix->u.m[2][1] / sinb, matrix->u.m[2][0] / sinb); beta = atan2f(sinb, matrix->u.m[2][2]); gamma = atan2f(matrix->u.m[1][2] / sinb, -matrix->u.m[0][2] / sinb); } else { alpha = atan2f(matrix->u.m[0][1], matrix->u.m[0][0]); beta = 0.0f; gamma = 0.0f; } D3DXSHRotateZ(temp, order, gamma, in); rotate_X(temp1, order, 1.0f, temp); D3DXSHRotateZ(temp, order, beta, temp1); rotate_X(temp1, order, -1.0f, temp); D3DXSHRotateZ(out, order, alpha, temp1); return out; } static void rotate_X(FLOAT *out, UINT order, FLOAT a, FLOAT *in) { out[0] = in[0]; out[1] = a * in[2]; out[2] = -a * in[1]; out[3] = in[3]; out[4] = a * in[7]; out[5] = -in[5]; out[6] = -0.5f * in[6] - 0.8660253882f * in[8]; out[7] = -a * in[4]; out[8] = -0.8660253882f * in[6] + 0.5f * in[8]; out[9] = -a * 0.7905694842f * in[12] + a * 0.6123724580f * in[14]; out[10] = -in[10]; out[11] = -a * 0.6123724580f * in[12] - a * 0.7905694842f * in[14]; out[12] = a * 0.7905694842f * in[9] + a * 0.6123724580f * in[11]; out[13] = -0.25f * in[13] - 0.9682458639f * in[15]; out[14] = -a * 0.6123724580f * in[9] + a * 0.7905694842f * in[11]; out[15] = -0.9682458639f * in[13] + 0.25f * in[15]; if (order == 4) return; out[16] = -a * 0.9354143739f * in[21] + a * 0.3535533845f * in[23]; out[17] = -0.75f * in[17] + 0.6614378095f * in[19]; out[18] = -a * 0.3535533845f * in[21] - a * 0.9354143739f * in[23]; out[19] = 0.6614378095f * in[17] + 0.75f * in[19]; out[20] = 0.375f * in[20] + 0.5590170026f * in[22] + 0.7395099998f * in[24]; out[21] = a * 0.9354143739f * in[16] + a * 0.3535533845f * in[18]; out[22] = 0.5590170026f * in[20] + 0.5f * in[22] - 0.6614378691f * in[24]; out[23] = -a * 0.3535533845f * in[16] + a * 0.9354143739f * in[18]; out[24] = 0.7395099998f * in[20] - 0.6614378691f * in[22] + 0.125f * in[24]; if (order == 5) return; out[25] = a * 0.7015607357f * in[30] - a * 0.6846531630f * in[32] + a * 0.1976423711f * in[34]; out[26] = -0.5f * in[26] + 0.8660253882f * in[28]; out[27] = a * 0.5229125023f * in[30] + a * 0.3061861992f * in[32] - a * 0.7954951525f * in[34]; out[28] = 0.8660253882f * in[26] + 0.5f * in[28]; out[29] = a * 0.4841229022f * in[30] + a * 0.6614378691f * in[32] + a * 0.5728219748f * in[34]; out[30] = -a * 0.7015607357f * in[25] - a * 0.5229125023f * in[27] - a * 0.4841229022f * in[29]; out[31] = 0.125f * in[31] + 0.4050463140f * in[33] + 0.9057110548f * in[35]; out[32] = a * 0.6846531630f * in[25] - a * 0.3061861992f * in[27] - a * 0.6614378691f * in[29]; out[33] = 0.4050463140f * in[31] + 0.8125f * in[33] - 0.4192627370f * in[35]; out[34] = -a * 0.1976423711f * in[25] + a * 0.7954951525f * in[27] - a * 0.5728219748f * in[29]; out[35] = 0.9057110548f * in[31] - 0.4192627370f * in[33] + 0.0624999329f * in[35]; } FLOAT * WINAPI D3DXSHRotateZ(FLOAT *out, UINT order, FLOAT angle, const FLOAT *in) { UINT i, sum = 0; FLOAT c[5], s[5]; TRACE("out %p, order %u, angle %f, in %p\n", out, order, angle, in); order = min(max(order, D3DXSH_MINORDER), D3DXSH_MAXORDER); out[0] = in[0]; for (i = 1; i < order; i++) { UINT j; c[i - 1] = cosf(i * angle); s[i - 1] = sinf(i * angle); sum += i * 2; out[sum - i] = c[i - 1] * in[sum - i]; out[sum - i] += s[i - 1] * in[sum + i]; for (j = i - 1; j > 0; j--) { out[sum - j] = 0.0f; out[sum - j] = c[j - 1] * in[sum - j]; out[sum - j] += s[j - 1] * in[sum + j]; } if (in == out) out[sum] = 0.0f; else out[sum] = in[sum]; for (j = 1; j < i; j++) { out[sum + j] = 0.0f; out[sum + j] = -s[j - 1] * in[sum - j]; out[sum + j] += c[j - 1] * in[sum + j]; } out[sum + i] = -s[i - 1] * in[sum - i]; out[sum + i] += c[i - 1] * in[sum + i]; } return out; }

            參考

            [1] 姚端正, 梁家寶. 數(shù)學(xué)物理方法-第4版..

            [2] 顧樵. 數(shù)學(xué)物理方法.

            [3] Robin Green. "Spherical harmonic lighting: The gritty details." Archives of the Game Developers Conference. Vol. 56. 2003.

            [4] Joseph Ivanic, and Klaus Ruedenberg. "Rotation matrices for real spherical harmonics. Direct determination by recursion." The Journal of Physical Chemistry 100.15, 6342-6347, 1996.

            [5] Wikipea. Euler angles

            [6] Peter-Pike Sloan. "Stupid spherical harmonics (sh) tricks." Game developers conference. Vol. 9. 2008.

            [7] Ravi Ramamoorthi, and Pat Hanrahan. "An efficient representation for irradiance environment maps." Proceedings of the 28th annual conference on Computer graphics and interactive techniques. 2001.

            掃描二維碼推送至手機訪問。

            版權(quán)聲明:本文由財神資訊-領(lǐng)先的體育資訊互動媒體轉(zhuǎn)載發(fā)布,如需刪除請聯(lián)系。

            本文鏈接:http://thecityplacetownhomes.com/?id=16130

            “球諧光照——球諧函數(shù)” 的相關(guān)文章

            如何看待b站蔡徐坤打籃球視頻?

            自從b站出了創(chuàng)作激勵計劃(就是b站會根據(jù)up主視頻的播放量給予一定的現(xiàn)金獎勵)之后,每當(dāng)有新的熱點,就會產(chǎn)生一大波跟風(fēng)者,比如之前的《改革春風(fēng)吹滿地》。只要起了類似的標題,有相關(guān)的標簽,怎么也能有幾百幾千的播放量,積少成多。那么這時候蔡徐坤打籃球的視頻出現(xiàn)了。...

            標準籃球場場地尺寸

            標準籃球場場地尺寸

            標準籃球場場地尺寸 ,很多朋友都不知道,目前我們采用的尺寸標準是和國際籃聯(lián)的標準是一樣的。 目前我們所有正規(guī)的籃球場尺寸長度是。長度是28米,寬度15米,比例為28:15,這是惡政長的籃球場地標準,還有一些像兒童類型的籃球場地的尺寸標準,我們通常是緩沖區(qū)。 我們就...

            4.82億籃球迷,如何玩轉(zhuǎn)街頭籃球,或許ATR能給你答案

            4.82億籃球迷,如何玩轉(zhuǎn)街頭籃球,或許ATR能給你答案

            愛好籃球的朋友們,都知道一個名詞:街球! 街球俗稱“野球”,發(fā)源于美國。 在美國,你知道街球火到什么程度嗎? 這么說吧!上至美國總統(tǒng)、下至三歲小孩,他們都是街球運動的忠實粉絲,他們對街球由衷的熱愛,甚至許多人以街頭籃球為職業(yè),這讓街球幾乎成為“運動+文化”的代名詞,...

            圣光祝?!督诸^籃球》新手支招街頭籃球的攻略

            圣光祝?!督诸^籃球》新手支招街頭籃球的攻略

            原標題:圣光祝福《街頭籃球》新手支招街頭籃球的攻略 厚厚的烏云散去后明亮的光線照耀大地同時萬物皆會生成暗暗的影子。暗總是伴隨著光,從小一起長大的瑞爾和佩伊就是光和暗一般的存在。她們是為了守護世界而組成的《街頭籃球》超能戰(zhàn)隊!受到圣光祝福的少女瑞爾,用無盡的黑暗吞噬罪犯的佩伊。超能...

            2022年11月28日NBA常規(guī)賽 灰熊vs尼克斯直播比賽前瞻分析

            22-23賽季NBA常規(guī)賽持續(xù)進行中,灰熊vs尼克斯的比賽將在北京時間11月28日07:00開啟。紐約尼克斯過去4場比賽輸?shù)?場,球隊近況低迷。而且紐約尼克斯過去5個主場賽事輸?shù)?場,球隊的主場優(yōu)勢毫無體現(xiàn)。雖然孟菲斯灰熊過去6場比賽輸?shù)?場,球隊近況并非最佳。但在雙方過往的3次交手里,孟...

            港媒:亞洲橄欖球總會一錯再錯,賽事直播又用錯中國香港隊標識

            港媒:亞洲橄欖球總會一錯再錯,賽事直播又用錯中國香港隊標識

            【環(huán)球網(wǎng)綜合報道 記者趙友平】在韓舉辦的橄欖球賽事播錯中國國歌后,亞洲七人制橄欖球系列賽直播再度出錯。星島網(wǎng)、東網(wǎng)等港媒消息稱,中國香港橄欖球隊今日( 26日 )下午在阿聯(lián)酋站賽事中對戰(zhàn)馬來西亞,亞洲橄欖球總會官...

            ?