微小立体角

これまでレンダリング方程式の中で表れる微小立体角(Δω)の導出がいまいち理解できてなかったのですが、たまたま本屋で「ゲームプログラミングのための3Dグラフィックス数学」を立ち読みしたところ、とても分かりやすかったのでメモしておきます。
§
天頂角をθ、方位角をφとした場合、3次元空間上の任意の点は球座標を使って以下のように表現できます。
 \begin{align} x &= r \cdot \sin\theta \, \cos\phi \\ y &= r \cdot \sin\theta \, \sin\phi \\ z &= r \cdot \cos\theta. \end{align}
円弧の長さは半径と平面角(ラジアン)の積なので、方位角方向(XY軸)の弧の微小量は、r \cdot  sin\theta\Delta\phi 
同様に、天頂角方向(Z軸)の弧の微小量は、r \cdot \Delta\theta 
これら天頂角方向と方位角方向の弧が成す微小平面の面積は各微小量の積と等しく、 r^{2} \cdot sin\theta\Delta\theta\Delta\phi  
ところで立体角とは、弧が成す球面上の面積を球の半径の2乗で割った値の大きさと定義されています(単位はステラジアン)。したがってその微小量、すなわち微小立体角は、
 \Delta\omega = sin\theta\Delta\theta\Delta\phi
と求められます。
§
「ゲームプログラミングのための〜」は、スリーディーの加納さんも勧められてて是非手元に置いておきたい一冊ではあります。が、結構値が張るので、懐が気になる無職生活の身にはなかなか手が出しにくいところ。もう少し手頃な価格にならないかなあ。