作为蒙特卡罗路径追踪的一部分,我在这样的半球中生成方向。
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弹跳半球一样。
告诉我是否不清楚,
谢谢