三、 物件與結構設計
4.2 GEM 結構描述
4.2.1 座標軸轉換
質點與鏈結宣告完後,便開始設計聲音與影像的對應,建構整個球面,首先要做 的是清楚顯示座標軸,讓 3D 物件在 GEM 視窗上知道方位,作法是改編 chdh 所寫的 副程式ch_gemwin.pd,此副程式不僅在 GEM 視窗上顯示座標軸(如圖 41),更提供了 使用者用滑鼠旋轉與縮放座標軸視野,使用電腦滑鼠操作來說,按住左鍵做水平位移 即是以 GEM 畫面的 Y 軸為軸心做旋轉,按住左鍵做垂直平移即是以 GEM 畫面的 X 軸 為軸心做旋轉,按住右鍵做垂直位移即是以 GEM 畫面的 Z 軸為軸心做縮放。
圖 41 GEM 直角座標軸
副程式pd gem_structure 藉由$0-pmpd_sphereOut 將物件 pmpd 傳來的訊息傳遞下 去,而此程式中只接收了物件的位置,因此訊息包含了質點編號和質點位置,因此每 次在做對應時,都需要先抓到質點編號後,再把質點的位置丟進轉換,確保是此刻質
點的位置後再做下一個質點的位置運算;質點的位置先以!方向描繪(圖 42),再以!方
向描繪(圖 43),描繪的排列方式依照以下自行推算的公式:
!!! = 180°× 1 − !!!
! , ! = 1,2, … , ! − 1 ( 13 ) !!! = 360°× 1 − !!!! , ! = 1,2, … , ! − 1 ( 14 )
-‐ -‐ 39
其中!為球缺數,2≤ ! ≤ 20 , ! ∈ !。輸入以球面座標的度數為刻度排列,用物件 deg2rad 將度數轉成弧度,再透過轉換成直角座標參數對應。
圖 42 !!方向排列
圖 43 !!方向與!!方向排列
而為了使畫面更直覺、更貼近地理座標表示,因此最後更換了座標軸順序,做了 一個以穿過原點的向量!(1,1,1)為旋轉軸,做 −120°的座標旋轉。
4.2.2 質點與鏈結算圖機制
物件pmpd 運算機制很快速,但是還是會因為影格率 N 不得不產生一個小延遲 1000/N 毫秒,事實上這個小延遲就是pmpd 內部的一次運算週期,包含了 401 個質點 與 800 個鏈結(400 個!鏈結與 400 個!鏈結)。每個物件所夾帶的屬性參數是一個字串,
會根據要求訊息的內容而輸出物件pmpd 的內部屬性參數,例如本論文用到的要求訊
息只有get massesPos ,因此每個物件的屬性參數為:massesPos(字串) ID massesPos(數 字),用字串過濾的方式篩選 ID 和位置,並確保 ID 與座標變換過後的位置吻合,才能
-‐ -‐ 40
即時的產生出球缺。此屬性參數同時也傳給聲音合成機制做處理(詳細見 4.3 章)。
4.2.3 物理動態與方程式波域表現
波表在讀取動態變化的過程中,可以自由變換成各種在球面上高低起伏的波域,
然而質點彈簧系統就算因為!係數與!係數的調整可以使得波域緩慢起伏,仍然不能維 持固有的外型不變,因此需要轉換各質點所在的!和!座標,藉由不同方程式產生!座 標值,並且!的值在邊界必須為零,不然會發生不連續面。以下將提到文獻裡所討論的 幾個重要且滿足基本定義的方程式[8, 20],對照直角座標下的波域,如圖 44 ~圖 48 所示:
!(!, !) = (! − !)(! − 1)(! + 1)(! − 1)(! + 1) ( 15 )
圖 44 方程式(15)在(左)直角座標(右)球座標
!(!, !) = sin (!)sin (!)(! − !)(! − 1)(! + 1)(! − 1)(! + 1) ( 16 )
圖 45 方程式(16)在(左)直角座標(右)球座標
! !, ! = !"# (!")!"# (!") ( 17 )
-‐ -‐ 41
圖 46 方程式(17)在(左)直角座標(右)球座標
! !, ! = !"# (!")!"! (!") ( 18 )
圖 47 方程式(18)在(左)直角座標(右)球座標
! !, ! = !"# (1 − !!)!"# (1 − !!)(1 − !!)! ( 19 )
圖 48 方程式(19)在(左)直角座標(右)球座標
以上幾個波域的對照,雖然在球座標的起伏不這麼明顯,但是可以發現,除了滿 足邊界值= ±1外,都有對稱性,不論是線對稱、點對稱或軸對稱,但更重要的是因著 對稱的特性,在球面上的表現是循環的,也就是兩邊的邊界會接起來,沒有斷面。
-‐ -‐ 42