Math 用于网格操作的高斯衰减格式

Math 用于网格操作的高斯衰减格式,math,3d,mesh,gaussian,procedural,Math,3d,Mesh,Gaussian,Procedural,下面的返回定义为高斯衰减。我没有看到e或2的幂,因此我不确定这与高斯衰减有何关系,或者它是否是我用来在网格上获得平滑变形的错误类型: Mathf.Clamp01 (Mathf.Pow (360.0, -Mathf.Pow (distance / inRadius, 2.5) - 0.01)) 顶点是网格顶点列表,位置是网格操作/变形点 我的问题分为两部分: 1) 以上事实上是高斯衰减吗?这是说明性的,但似乎没有关键的e或2的力量。。。(更新-我看到图形以类似高斯的方式平滑减少。也许这个函数不是下

下面的返回定义为高斯衰减。我没有看到e或2的幂,因此我不确定这与高斯衰减有何关系,或者它是否是我用来在网格上获得平滑变形的错误类型:

Mathf.Clamp01 (Mathf.Pow (360.0, -Mathf.Pow (distance / inRadius, 2.5) - 0.01))
顶点
是网格顶点列表,
位置
是网格操作/变形点

我的问题分为两部分:

1) 以上事实上是高斯衰减吗?这是说明性的,但似乎没有关键的e或2的力量。。。(更新-我看到图形以类似高斯的方式平滑减少。也许这个函数不是下面问题2的原因)


2) 我的网格变形不够平滑-鉴于上述参数,您是否建议使用不同的高斯衰减

不知道网格等,但让我们看看数学:

f=360^(-0.1-((d/r)^2.5))看起来与高斯函数非常相似,足以导致“脱落”。 我将把指数拆开表示一点: f=360^(-d/r)^2.5)*360^(-0.1)=(0.5551)*360^(-d/r)^2.5)

如果d-->+inf,则f-->0 如果d-->+0,则f-->(0.5551) 360的指数总是负的(假设“距离”和“inRadius”总是正的),并且随着距离的增加而变得更大(更负)几乎是立方(2.5的幂),因此函数正在“下降”,并且运行得非常快

结论:该函数不是高斯函数,因为它在负输入和可能的其他原因下表现不好。它确实存在您正在寻找的“脱落”行为。 改变r将改变脱落的速度。当d=r时,f=(1/360)*0.5551。 该函数永远不会超过0.5551并低于零,因此代码中的“剪辑”是没有意义的

我看不出有什么具体的原因导致360度不变,它会稍微改变坡度


干杯

我想,为什么用有理数代替通常的无理e,有什么计算上的原因吗? sqrMagnitude = (vertices[i] - position).sqrMagnitude; // Early out if too far away if (sqrMagnitude > sqrRadius) continue; distance = Mathf.Sqrt(sqrMagnitude);