在另一个半球旋转方向

时间:2016-02-07 00:01:12

标签: c++ path tracing

作为蒙特卡罗路径追踪的一部分,我在这样的半球中生成方向。

double theta = acos(1 - 2 * uniformRandom01());
double phi = 2 * M_PI * uniformRandom01();
Vec direction(cos(theta) * cos(phi), sin(theta) * cos(phi), sin(phi)); 

但是,这些方向是在半球中生成的,其中心是矢量(0,1,0)。

现在,我的正常交叉点。如何旋转生成的方向以使其在交叉点正常的半球中放置?

Example of hemispheres 这张照片来自http://www.scratchapixel.com/lessons/3d-basic-rendering/global-illumination-path-tracing

例如,生成方向的半球是底部的半球。我想把这个方向放在另一个半球上,就像2 ou 3弹跳半球一样。

告诉我是否不清楚,

谢谢

0 个答案:

没有答案