やりたいこと
輻射による熱のやり取りを評価する場合,レイトレースすることで物体間のRadiative Coupling(または形態係数)を求めることが出来る.
このとき光線は,物体の表面上で面積に関して一様になるように発生点を指定して,そこからランベルトの余弦則に沿うように光線の方向を決めてやる必要がある.
今回は基本的な表面形状(長方形・三角形・円板・球面・円柱・円錐・放物面)について,0–1の範囲のランダム値からどうやって一様分布を発生させるかを考える.
長方形上の一様分布
下図のような長方形上に一様分布させる場合は,2つのランダム値(q1,q2)を発生させて,以下のように計算すればよい.
q1(p2−p1)+q2(p3−p1)
三角形上の一様分布
三角形の場合は,発生させた2つのランダム値(q1,q2)の和が1より大きい場合は値を捨てて,和が1以下の組み合わせが得られるまでランダム値を繰り返し発生させる.
q1(p2−p1)+q2(p3−p1)
円柱側面上の一様分布
円柱側面上に点を一様分布させる場合は,高方向・周方向それぞれ一様に値をとればよい.
高さhは,0–1の範囲のランダム値qを用いて以下のように決められる.
h=hmaxq
周方向のパラメタφは以下のように決められる.
φ=2πq
円板上の一様分布
部分円板上に点を一様にばらまく場合,ある点が半径方向の位置rの内側に入る確率は次のように表される.
q=∫rinnerrouter∫θstartθendrdrdθ∫rinnerr∫θstartθendrdrdθ=router2−rinner2r2−rinner2
この式を逆に解いてやると,0–1の値pに対して半径方向の位置rを対応させることが出来る.
r=q(router2−rinner2)+rinner2
周方向については,次のように決められる.
θ=q(θend−θstart)+θstart
球面上の一様分布
部分球面上に一様に点をばらまく場合,ある点が緯度方向についてθ以下である確率は次のように表される.
q=∫θbaseθend∫φstartφendsinθdφdθ∫θapexθ∫φstartφendsinθdφdθ=[−cosθ]θapexθbase[−cosθ]θapexθ=cosθapex−cosθbasecosθapex−cosθwhere θbase=arccosrhbase, θapex=arccosrhapex
この式を逆に解いてやると,0–1の値pに対して緯度方向のパラメタθを対応させることが出来る.
θ=arccos(cosθapex−q(cosθapex−cosθbase))=arccos((1−q)rhapex+qrhbase)
経度方向については,次のように決められる.
φ=q(φend−φstart)+φstart
円錐面上の一様分布
部分円錐面上に一様に点をばらまく場合,ある点が高さh以下である確率は次のように表される.
q=∫0hmax∫φstartφendcosθ2πrdφdh∫0h∫φstartφendcosθ2πrdφdh, where r=r1−tanθ h, tanθ=hmaxr1−r2=∫0hmaxr1−tanθh dh∫0hr1−tanθ h dh=[r1h−2tanθh2]0hmax[r1h−2tanθh2]0h=r1hmax−2tanθhmax2r1h−2tanθh2
この式を逆に解いてやると,0–1の値qに対して高さ方向のパラメタhを対応させることが出来る.
解は2つ存在するが,高さhが円錐の頂点を超えないようにしたいので,マイナスの場合を用いる.
h=tanθr1±(tanθr1)2−2qhmaxtanθr1+qhmax2
周方向については,次のように決められる.
φ=q(φend−φstart)+φstart
放物面上の一様分布
下図のような部分放物面について考えよう.ただし放物面の頂点は原点にあり,放物面の軸が高さ方向の軸に一致するものとする.半径rと高さhの関係は以下のように表される.
h=a2r2, where a2=rmax2hmax
r=ah
接線の傾きをtanθで表すとすると,以下のように表される.
tanθ=drdh=2a2r
1+tan2θ1=sin2θ1を用いると,以下の関係が得られる.
sinθ1=1+tan2θ1=1+4a4r21sinθr=a2h+4a6r2h=a2h+4a41
一様に点をばらまく場合,ある点が高さh以下である確率は次のように表される.
q=∫hminhmax∫φstartφendsinθrdφdh∫hminh∫φstartφendsinθrdφdh=∫hminhmaxh+4a21dh∫hminhh+4a21dh=[32(h+4a21)23]hminhmax[32(h+4a21)23]hminh=(hmax+4a21)23−(hmin+4a21)23(h+4a21)23−(hmin+4a21)23
この式を逆に解いてやると,0–1の値qに対して高さ方向のパラメタhを対応させることが出来る.
(h+4a21)23=q{(hmax+4a21)23−(hmin+4a21)23}+(hmin+4a21)23h=[q{(hmax+4a21)23−(hmin+4a21)23}+(hmin+4a21)23]32−4a21