Mathematicaでの空の色の計算が間違っているのはなぜですか?
この論文(Perezモデル)に基づいて空の色を計算するアルゴリズムを実装しようとしています。シェーダーのプログラミングを始める前に、Mathematicaで概念をテストしたかったのです。私は取り除くことができないいくつかの問題が既にあります。誰かがすでにアルゴリズムを実装しているかもしれません。 私は絶対zenital輝度のための方程式を開始しYz、xzそしてyzなど紙(22ページ)で提案されています。の値はYz妥当なようです。次の図はYz、濁度Tが5の場合の太陽の天頂距離の関数として示しています。 関数gamma(zenith、azimuth、solarzenith、solarazimuth)は、指定された天頂距離と方位角を持つポイントと指定された位置の太陽の間の角度を計算します。この機能も機能しているようです。次の図は、この角度を示しているsolarzenith=0.5とsolarazimuth=0。zenith上から下へ(0からPi / 2へ)azimuth成長し、左から右へ(-PiからPiへ)成長します。太陽の位置をはっきりと見ることができます(輝点、角度はゼロになります): Perez関数(F)と係数は、論文に記載されているとおりに実装されています。その場合、色値Yxyはになりますabsolute value * F(z, gamma) / F(0, solarzenith)。これらの値は[0,1]の範囲内にあると考えています。ただし、これはYコンポーネントの場合ではありません(詳細については、以下の更新を参照してください)。サンプル値は次のとおりです。 {Y, x, y} {19.1548, 0.25984, 0.270379} {10.1932, 0.248629, 0.267739] {20.0393, 0.268119, 0.280024} 現在の結果は次のとおりです。 すべての計算が記載された Mathematicaノートブックはここにあり、PDFバージョンはこちらにあります。 誰も私が論文と同じ結果を得るために何を変更しなければならないか考えていますか? Cのようなコード // this function returns the zenital Y component for // a given solar zenital distance z and turbidity T float …