地图点随机分布均匀_如何在单位球内产生一个均匀分布的随机的点?

在光线跟踪算法里,有一个子问题:如何在一个半径为1的单位球里面,产生一个均匀分布的随机的点(相同的体积里有相同数量的点)。下面这篇文章里给出了5种可能的方法 (参考文献[3])。当然,后面我们会看到,这5种方法并不都是对的。

c036a58bd136f4ce9db646567fa0d286.png

球里面均匀分布的点

方法一:拒绝掉不在球里的点

这个方法是这样,首先我们在x,y,z分别在 [-1, 1] 里均匀采样,这样就能实现在一个立方体里均匀采样。但这样的点可能不在球里,我们把不在球里的点拒绝掉就行。

function getPoint() {    var d, x, y, z;    do {        x = Math.random() * 2.0 - 1.0;        y = Math.random() * 2.0 - 1.0;        z = Math.random() * 2.0 - 1.0;        d = x*x + y*y + z*z;    } while(d > 1.0);    return {x: x, y: y, z: z};}

这里,Math.random() 会产生一个[0,1]之间的均匀分布的随机数。

方法二:选择一个随机的方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值