2011-10-29 39 views
0

下面的這個返回定義爲高斯衰減。我沒有看到e或2的冪,所以我不確定這是如何與高斯衰減相關的,或者如果它是我用來在我的網格上獲得很好的平滑變形的錯誤種類的後果:用於網格操縱的高斯衰減格式

 
Mathf.Clamp01 (Mathf.Pow (360.0, -Mathf.Pow (distance/inRadius, 2.5) - 0.01)) 

其中Mathf.Clamp01返回0和1

inRadius之間的值是失真的大小和distance由下式確定:

 
     sqrMagnitude = (vertices[i] - position).sqrMagnitude; 
     // Early out if too far away 
     if (sqrMagnitude > sqrRadius) 
      continue; 
     distance = Mathf.Sqrt(sqrMagnitude); 

vertices是網格頂點的列表,和position是網格操縱/變形的要點。

我的問題是兩個部分:

1)實際上是上述高斯衰減?它是指數式的,但似乎並不是2的關鍵電子或力量......(更新 - 我看到圖似乎以高斯類似的方式平滑下降。也許這個函數不是問題2的原因下面)

2)我的網格不夠平穩地變形 - 給定上述參數,你會推薦一個不同的高斯衰減?

回答

0

不知道網等,但讓我們看看是數學:

F = 360 ^( - 0.1 - ((d/R)^ 2.5))看起來gausian功能相似,足以使一個「脫落「。 ( - (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的冪)變大(更負),因此函數「脫落」並且速度非常快。

結論:函數不是Gausian,因爲它對於負輸入表現很差,可能是出於其他原因。它確實表明您正在尋找的「脫落」行爲。 更改r將改變衰減的速度。當d == r時,f =(1/360)* 0.5551。 該函數將永遠不會超過0.5551並在零以下,因此代碼中的「裁剪」是沒有意義的。

我沒有看到任何看到恆定360的任何具體原因 - 改變它改變斜率一點。

乾杯!

+0

有沒有計算的原因,我想,爲什麼使用有理數而不是通常的非理性e? – ina