2
为什么在Mathematica中我的天空颜色计算不正确?
我正在尝试根据本文(Perez模型)实现一种算法来计算天空颜色。在开始对着色器进行编程之前,我想在Mathematica中测试该概念。已经存在一些我无法摆脱的问题。也许有人已经实现了该算法。 我首先从绝对绝对亮度的方程式开始Yz,xz并yz按照论文的建议(第22页)进行了计算。的值Yz似乎是合理的。下图显示Yz了浊度T为5时太阳的距离的函数: 函数gamma(天顶,方位角,太阳斜角,太阳脊)计算具有给定的距离和方位角的点与给定位置的太阳之间的角度。此功能似乎也起作用。下图显示了solarzenith=0.5和的角度solarazimuth=0。zenith从上到下(0到Pi / 2)azimuth增长,从左到右(-Pi到Pi)增长。您可以清楚地看到太阳的位置(亮点,角度变为零): 佩雷兹函数(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 Yz(float …