gpt4 book ai didi

c++ - 软阴影 : Spherical Area Light Source

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:46:59 24 4
gpt4 key购买 nike

我正在尝试在我的光线追踪器中实现柔和阴影。为此,我计划从交点向区域光源发射多条阴影光线。我的目标是使用球形区域光——这意味着我需要在球体上为光线的方向 vector 生成随机点(回想一下,光线是用原点和方向指定的)。

我四处寻找在球体上生成均匀分布的随机点的方法,但它们似乎比我正在寻找的要复杂一些。有谁知道在球体上生成这些点的任何方法?我相信我的球体区域光源将简单地由其 XYZ 世界坐标、RGB 颜色值和 r 半径定义。

谢谢,感谢您的帮助!

最佳答案

Graphics Gems III,第 126 页:

void random_unit_vector(double v[3]) {    
double theta = random_double(2.0 * PI);
double x = random_double(2.0) - 1.0;
double s = sqrt(1.0 - x * x);
v[0] = x;
v[1] = s * cos(theta);
v[2] = s * sin(theta);
}

(这是 MathWorld 的 Sphere Point Picking 文章中给出的四种方法中的第二种。)

ETA:如果半径为 r 的球体以 O 为中心,并且 u 是一个随机单位 vector ,则在球体的表面由 O + r u 给出。

关于c++ - 软阴影 : Spherical Area Light Source,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13775510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com