網頁

2011年10月28日 星期五

Civil 3D 地形物件與土方計算之關係 - 數學原理探討(三)

本文有許多的小問題如(Why?)、(How?) 等留給有興趣的朋友自行觀察及思考,均不是什麼難題,只是一些幾何觀察或簡易代數推導。

接著以前文圖中白色方框四個頂點的文字所建立的地形物件"地形2"為探討標的。若朋友有動手跟著前的指引動手操作一番,應會發現隨著 NNI 地面平滑法的格線間距 X,Y的逐次減小,"地形2" 的三維環轉檢視結果會愈顯示地形趨近一個二次曲面-雙曲拋物面 (馬鞍面)。其實若依照雙曲抛物面的數學通式 z = f(x,y) = Axy+Bx+Cy+D,其中僅包含四個係數 (Why? 有否作了一些簡化假設?)。因此以四個頂點高程資料所能定義的曲面以馬鞍面表示時,恰可求得該曲面方程的四個係數。如此看來,隨著 NNI 地面平滑法的格線間距 X,Y的逐次減小,"地形2" 趨近一個馬鞍面似乎非意外之事。假設方格(白色方框)邊長為 d,則A、B、C、D四個係數得以方格四個頂點高程Z1~Z4及邊長 d 表示之,朋友可自行推導得其四個表示式。(How?)

接著從 Delaunay Triangulation / Voronoi Diagram 的角度來切入這個問題,探討看看NNI平滑法計算式是否會得到同樣的結果。先將白色方框及四個頂點等均投影在 z=0 的 xy平面上,以下均是以在該 xy平面上為前提作討論。依照"地形2"白色方框四個頂點為共圓的特性,其 Delaunay Trangulation 可以有二種方式,但是其 Voronoi tessellation 則僅有一種。若以該方框四個頂點共圓圓心處為座標原點,則 X、Y軸所切割的四個象限即為其Voronoi tessellation。

於白色方框範圍內任選一點 P (x,y)作為欲內插估算其高程值的位置,繪製其與四個頂點的 Voronoi diagram (如附圖中綠色聚合線所框圈的範圍)。
這個繪製得的 Voronoi diagram 具有一些特性:
1. 為四邊形;
2. 該四邊形的頂點則落於 X軸及Y軸上;(Why?)
3. 假設白色方框的邊長為 d,則該Voronoi diagram 四邊形的四個頂點 J1~J4的座標則可表示如右(Why?):

該Voronoi diagram與原Voronoi tessellation 四個象限交集的面積分別可表示為 W1=0.5×X1×Y1、W2= -0.5×X3×Y2、W3=0.5×X3×Y4、W4= -0.5×X1×Y4。如此則依照 NNI 平滑法的面積權重定義,點 P(x,y) 的高程值 Zp 可內插計算如下(Why?)

其結果確實為一個雙曲拋物面,換言之"地形2" 的情形在本質上實是一個馬鞍面的形式。 故在方框邊界處 (x=d/2, x= -d/2, y=d/2, y= -d/2)的高程值內插計算式會蛻化為線性函數,如三維環轉檢視的結果般。(該式是否與本文第一段建議朋友自行推導數學通式 z = f(x,y) = Axy+Bx+Cy+D 的四個係數 A、B、C、D以方格四個頂點高程Z1~Z4及邊長 d 表示之結果相同?殊途同歸?)

而其方格範圍內之馬鞍面與 z=0 的 xy平面所包圍的總體積則可推導得如右式(Why?)。此與一般所認知之完整方格於全挖方或全填方情形時之計算式相同。其實這個結果無需經數學式推導,由觀察其馬鞍面的幾何特性即可推知得。(How?)

接著探討前一篇文章中"地形1"的情形,先動手繪製其 Voronoi tessellation,觀察一下有何特殊之處!
(續文:Civil 3D 地形物件與土方計算之關係 - 數學原理探討(四))

****
相關連結
 Interpolation Of Meteorological Data in Autodesk Civil 3D Environment 
GIS Functions - Interpolation

 本文公式撰寫之貼圖均以 LibreOffice 3.4x(3.3x) 製作,其公式描述內容如下。朋友們可自行貼附在LibreOffice.org (或是 OpenOffice.org) 的 Writer中,選取後點按"公式"圖例即可完成數學式的編製。
J1 = (X1,Y1)=~left({d^2 / 2 -(x^2+y^2)} over {alignc d-2x},~0 right) newline
J2 = (X2,Y2)=~left(0,~{d^2 / 2 -(x^2+y^2)} over {alignc d-2y} right) newline
J3 = (X3,Y3)=~left({d^2 / 2 -(x^2+y^2)} over {alignc -(d+2x)},~0 right) newline
J4 = (X4,Y4)=~left(0,~{d^2 / 2 -(x^2+y^2)} over {alignc -(d+2y)} right) newline
Zp~=~{sum W_i Z_i}over{alignc sum W_i} newline
~~~~=~ {alignc Z_1 over {(d-2x)(d-2y)} + {alignc Z_2} over {(d+2x)(d-2y)}+{alignc Z_3} over {(d+2x)(d+2y)}+{alignc Z_2} over {(d-2x)(d+2y)}} over{alignc 1 over {(d-2x)(d-2y)} + {alignc 1} over {(d+2x)(d-2y)}+{alignc 1} over {(d+2x)(d+2y)}+{alignc 1} over {(d-2x)(d+2y)}} newline newline
~~~~=~ {Z_1-Z_2+Z_3-Z_4} over {alignc d^2} xy+{Z_1-Z_2-Z_3+Z_4} over {alignc 2d}x+{Z_1+Z_2-Z_3-Z_4} over {alignc 2d}y+{Z_1+Z_2+Z_3+Z_4} over {alignc 4}

沒有留言: