java—实现物理的随机性(如blender)

hfsqlsce  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(420)

作为一个例子,我指的是blender的粒子碰撞系统,您可以将粒子阻尼的随机性设置在0.0和1.0之间。我现在的问题是:它到底是如何工作的?是的,在0.0和1.0之间会有一个随机数,但它是如何应用于阻尼系数的?我想在java中创建一些类似的东西,因此我想完全理解其背后的计算。随机因素概率p和计算类似于高斯分布吗?作为一个应用例子:我想随机向量的方向。 vector.y += random1; vector.y += random2; vector.z += random3; vector.scale(prevLength/vector.length); 然而,看起来,所有向量分量都变成零,这是非常不可能的,但并非不可能。显然这不是正确的解决方案。

3b6akqbq

3b6akqbq1#

我找到了阻尼的答案

public Vector3f damping(Vector3f vector) 
{
    float random = (float) (this.randomDamp*(Math.random()*2-1));
    float clampedValue = Math.max(0, Math.min(1, (1-damp)+random)); //clamp between 0 and 1
    vector.scale(clampedValue);
    return vector;
}

看起来blender只是将随机数相加,所以当因子为0.5,随机因子为1时,最终因子将在-0.5(0)和1.5(1)之间变化。

相关问题