这是基于我问这里的问题,但我想我可能问错了问题。这是我的问题:我正在写一个科学的射线追踪器。也就是说,不适用于图形,尽管概念是相同的。
我从一个水平平面发射射线到一个聚焦距离为100米的抛物线盘(以及完美的镜面反射)。我在盘子的焦点有个目标。光线不是从平面垂直发射的,而是受到一定角度的扰动,以模拟太阳不是点源而是天空中的圆盘这一事实。
然而,来自太阳的通量不是通过太阳盘的径向恒定的。它中间的温度比边缘的高。如果你曾经在一个朦胧的日子里看过太阳,你就会看到太阳周围的一圈。
由于抛物线盘,目标上的反射图像应该是太阳的图像。也就是说,它应该更亮(更热,更多的通量)在中间比在边缘。这是由一个具有强度Vs的图形给出的。离中心的径向距离
我可以用两种方法来模拟。
首先:均匀采样,:每条射线都是从太阳圆盘大小和零点之间取一个角度的相等(均匀)概率中射出的。然后,根据该角度的相应通量值,对射线所携带的通量进行刻度。
其次:任意采样:每条射线根据强度Vs的分布从平面上射出。径向距离因此,向外边缘照射的光线将比中心内的射线少。这在我看来要有效得多。但我不能让它起作用。有什么建议吗?
这就是我所做的:
一致
phi = 2*pi*X_1
alpha = arccos (1-(1-cos(theta))*X_2)
x = sin(alpha)*cos(phi)
y = sin(alpha)*sin*phi
z = -cos(alpha)
其中X
是均匀随机数,theta
是太阳盘的子趋向角。
随机抽样
alpha = arccos (1-(1-cos(theta)) B1)
其中B
是一个随机数,它使用pg 27 这里上的算法从一个分支分布中生成。
我很想解决这个问题。
发布于 2013-06-25 15:10:25
你的功能下降到零,因为太阳不是一个光滑的表面物体,这可能是错误的。很有可能太阳的各个部分都有光子向四面八方发射。
但是:你真正的问题是什么?
发布于 2013-06-29 19:33:31
你在找蒙特卡罗积分。关键的想法是:虽然你会在光盘外取样较少的射线,但你会增加这些射线的重量,它们将对更重要的总和作出贡献。
对于均匀抽样,只需将强度值之和,用非均匀抽样将每个强度除以射出射线的概率分布值(例如,对于均匀分布,此值是常数,不改变任何情况)。
https://stackoverflow.com/questions/17165134
复制