【发布时间】:2013-06-13 09:05:03
【问题描述】:
我正在编写一个光线追踪器,我希望根据某种分布将光线从 p 点发射到该点上方的半球。
1) 我推导出了一种在 p Image
以上的立体角(由 theta 定义)内均匀采样的方法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 是一个统一的随机数
这很有效,我对此非常满意。但我的问题是,如果我不想要均匀分布会发生什么。
我使用了here 第 27 页上的算法,我可以从分段任意分布中抽取样本。但是,如果我简单地说:
alpha = arccos (1-(1-cos(theta)) B1)
其中B 是从任意分布生成的随机数。
它表现得不好......我做错了什么?提前致谢。我真的很需要这方面的帮助
补充: 也许我在问一个引导性的问题。退后一步: 有没有办法根据任意分布在半球上生成点。我有一种用于均匀采样半球的方法和一种用于余弦加权半球采样的方法。 (第 663-669 页 pbrt.org)
【问题讨论】:
标签: graphics random raytracing sampling montecarlo