【发布时间】:2020-05-02 17:02:17
【问题描述】:
我需要一种可以提供 Vector2 位置和半径的方法,这将在半径中为我提供一个随机点,朝向中心的机会高于半径边缘的机会。
我已尝试寻找解决此问题的方法,但未能在搜索引擎中很好地描述问题,无法得出好的结果。
希望这里有人可以为我指明正确的方向。非常感谢任何语言的代码示例!
【问题讨论】:
标签: math game-engine game-physics physics
我需要一种可以提供 Vector2 位置和半径的方法,这将在半径中为我提供一个随机点,朝向中心的机会高于半径边缘的机会。
我已尝试寻找解决此问题的方法,但未能在搜索引擎中很好地描述问题,无法得出好的结果。
希望这里有人可以为我指明正确的方向。非常感谢任何语言的代码示例!
【问题讨论】:
标签: math game-engine game-physics physics
这个怎么样:
【讨论】:
不确定这是否正是您想要的,但它应该为您提供一些分布,球体中心的每体积点更多:
您可以使用这个简单的公式在球体表面上找到一个随机均匀分布的点: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)
指数越高,球体中间的点数就越多。
【讨论】: