返回所提供Vector3半径中随机点的方法,该方法在半径中心处的概率高于边缘

问题描述 投票:0回答:1

我需要一种可以提供Vector3位置和半径的方法,该方法将为我提供半径中的随机点,并且比半径的边缘向中心的机会更大。

我曾尝试寻找此问题的解决方案,但未能在搜索引擎中很好地描述该问题,从而无法得出满意的结果。

希望这里有人可以指出正确的方向。任何语言的代码示例都受到高度赞赏!

math game-engine game-physics physics
1个回答
0
投票

不确定这是否正是您想要的,但是它应该为您提供一些分布,在球体中心每体积的点数更多:

您可以使用这个简单的公式在球面上找到随机均匀分布的点:Generate a random sample of points distributed on the surface of a unit sphere

[当您抓住这一点并向内移动时,将其乘以随机值并除以r:

(x,y,z) *= randomValue

其中(x,y,z)是指向表面上随机点的向量,randomValue是0到1之间的某个随机值。

这相对于r给出了均匀的分布,但是由于曲面以较小的半径而变小,因此您的点将集中在中间。

如果要进一步调整分布,可以向randomValue添加一些功能:

(x,y,z) *= pow(randomValue, exponent)

指数越高,您将在球体中间得到的点越多。

© www.soinside.com 2019 - 2024. All rights reserved.