網頁

2010年10月1日 星期五

Civil 3D與土方計算–從數學原理談起!(一)

使用過Civil 3D 網格法土方計算及圖面繪製dvb 外掛程式 (EarthworkConstructDrawing.dvb )的朋友,是否有若筆者對於其選項中『手工算法』的內容感到困惑?何謂三角稜柱法?何謂四角稜柱法?何者結果較佳?有無更合理的算法?這支程式似乎是從 china country kit 中所分離出來的程式之一,這其中的計算式似乎對岸內地的朋友亦有一些文章說明分享在網路上,但其中的詳細數學原理及檢討則似乎無相關的討論。

此外,凡是Civil 3D 2009/2010 Autodesk Subscription 用戶的朋友,也許有下載使用 Stage Storge Extension 延伸套件的經驗。這套件原本是用於水利工程中的蓄水量-高程之率定曲線求算,雖然是作為水體體積計算用途,但基本上也是按等高線面積求算體積的原理進行。

無論是求算總土方量、挖/填方量、或是蓄水量,基本上均是利用數值地形求算體積的過程。故若要探究該程式功能的適用與否,或是計算方式有無瑕疵,最好的方式並非拿實案值代入盲算、窮算,而是從其中的數學基本原理及計算式推導結果之相關假設開始探討。

因此,在未來數日中會分數篇文章分享筆者的觀點,以及筆者自行依數學假設推導整理的結果。觀迎對土方計算原理及改進算法有興趣的朋友,一同檢驗。

體積應該怎麼算才合理?

問題:
已知沿高程(或距離)s方向的 k 個離散截面積值 A_i,其沿S方向的截面積變化為連續函數分佈 A=F(s),則該k個離散截面積值可表示為A_i=F(S_i),其中Si為沿s方向的高程(或距離)。試估算其兩相鄰離散截面積值A_i、A_(i+1)之間的體積。

在數學的語言中,若一個物體的截面積A可表示為高程(或是橫向距離) s的連續函數 A=A(s),則該物體的體積 V 可依積分求得。

然而在實務中這是不可能真的達成,僅會依數個測點的數據建立等間距的等高線(或是沿定線方向的等間距橫斷面),截面積A 僅能在這些等高線(或橫斷面)所在的高程(或距離)中得知,這些截面積均為離散的數值。工程實務中僅能依這些相鄰等高線(或相鄰橫斷面)間距為di的離散截面積數值,設法求得較佳解、或是最合理解。因此,必須作些合理的假設條件,使體積仍可依這些離散截面積值估算得。

1. 假設相鄰截面積間的面積變化是線性的
此即為梯形公式(The Trapezoidal Rule)。

2. 假設截面積 Ai、Ai+1之間的面積變化是循錐形體
即截面積開方與距錐形體頂點距離成正比,則體積按積分式可求得
此即錐形體公式。
 
3. 假設截面積 Ai、Ai+1之間的面積變化是距離s的二次多項式函數(拋物線)分佈
則 A(s) 可以表示如右式 。因函數包含三個未知係數,必須有三條非線性相依的方程式才能聯立求解,因此假設於截面積 Ai、Ai+1、Ai+2間的面積變化是呈二次曲線(拋物線)函數變化,則三個截面積分別位於距離為Si、Si+1、Si+2處的截面積Ai、Ai+1、Ai+2代入該函數恰提供三條獨立方程式。
(使用 OpenOffice.org 3.2 編輯而成)

因此,各相鄰截面積間的體積計算可依截面積個數為奇數或偶數情境計算如下:
(1)若截面積個數為A1、A2...A2n、A2n+1共2n+1個,則面積變化函數恰可以n個二次多項式函數接合,各相鄰截面斷間的體積可分別依 V1、V2公式原理計算。
(2)若截面積個數為A1、A2...A2n-1、A2n共2n個,則自A1至A2n-1共2n-1個截面積間的面積變化函數恰可以(n-1)個二次多項式函數接合,各相鄰截面斷間的體積可分別依 V1、V2公式計算,而A2n-1至A2n間的體積則可以A2n-2、A2n-1、A2n構成的二次多項式函數按 V2公式原理計算。

這樣的計算程序,是基於相鄰截面積間的面積變化分佈是循二次多項式函數型式的假設,故個人暫稱此體積計算程序為二次多項式法。

二次多項式法是否優於平均斷面法?可以經由進一步的多項式係數分析作探討。若面積函數B(t)的二次項係數為零,則面積函數B(t)僅為t的一次多項式函數,即斜率為 m 的直線。
換言之,二次多項式法的計算程序包含平均斷面法的計算程序。依前述的推導過程,二次多項式法的體積估算僅將Ai、Ai+1之間面積變化趨勢(僅考量區間前方或後方的單向資訊),即利用區間後方(曲線右側)的截面積Ai+2建構成的二次多項式依(9)~(12)式計算之,或選用間區前方(曲線左側)的的截面積Ai-1建構成的二次多項依(9)~(12)式型式計算之。

沒有留言: