• 沒有找到結果。

第四章 物理虛擬實驗室之程式設計

第二節 力、質量與加速度間的關係

本虛擬實驗探討外力與加速度的關係,其目的同於實驗一「力與加速度間關 係」的實驗。實驗室的場景以3D實體呈現(圖4-2-1),實驗數據底圖的運用方式 與實驗一「力與加速度間關係」相同。

本虛擬實驗與實驗一「力與加速度間關係」的實驗裝置器材有部分的差異,

除滑車(car)、軌道(slide)、實驗桌(desk)、偵測器(sensor)之外,尚需繩索 (rope)、滑輪(wheel)、法碼及法碼盤。預設的軌道(slide)為水平放置在實驗桌 上,而滑車於軌道上靜置於一端,啟動時,滑車因法碼的重力因素透過繩索牽引 而移動,當滑車經過Sensor01及sensor02偵測器,偵測器偵測滑車從出發點至偵 測器所耗費時間與速度的方式,再透過V=V0+at的物理公式及四則運算的參數,計 算本實驗中滑車的加速度。此方式和實驗一「力與加速度間關係」實驗相同。圖 4-2-2為本實驗裝置的各物件名稱圖。

圖 4-2-1 力、質量與加速度間的虛擬實驗室場景

二、力、質量與加速度間關係的實驗程式設計

本實驗藉由啟動不同的法碼外力來拉動滑車,在系統質量保持固定不變,探 討軌道上滑車的加速度與外力關係,實驗的程式設計共分六大部分,如下所列:

1.滑鼠鍵盤控制與攝影機;2.物件物理化;3.數據顯示;4.啟動法碼與滑車方式;

5.偵測滑車移動;6.繩索的移動。項目1、2、3的程式設計方式如同上一節「力 與加速度間關係」的實驗,本節不再敘述,以下就項目4、5、6三部分詳細探討 及說明程式方面的設計方法。

1. 啟動法碼與滑車方式

圖4-2-3是啟動法碼與滑車的程式設計圖,表4-2-1為運用的模組,本實驗的 實驗原理是啟動法碼的外力,藉繩索帶動滑車移動,偵測滑車在經過兩偵測器的 速度及花費時間,最後經物理公式運算求得滑車的加速度,但依此設計構想發 現,進行程式模組編輯時,其難度非常高,因此繩索部份得分成桌上水平及側邊 垂直兩部分模擬,且虛擬實驗改採啟動滑車方式,另繩索及法碼移動的速度設定 與滑車同步,以達到操作者在操作實驗時,所感受到是由法碼帶動滑車移動,虛

圖4-2-2 力、質量與加速度間關係的裝置物件名稱

4-2-3 啟動法碼與滑車的程式設計圖

擬實驗的擬真效果會猶如傳統實驗室實驗情境。﹝Key Waiter﹞參數設定Enter 確 認 鍵 啟 動 滑 車 且 同 時 間 滑 車 接 受

﹝Physicalize﹞物理化,而﹝Physicalize﹞

的out端連接﹝Modify Physics Globals﹞In 端,﹝Modify Physics Globals﹞的參數設定 如圖4-2-4,其中Y的重力加速度設定為

-981cm/s 2 ,Z軸方向所設定加速度值則視法碼 的外力值及固定不變系統總質量,所推算的滑 車理論加速度值而定。在本虛擬實驗室的四種不同外力狀況下,除法碼外力不同 外,其餘﹝Modify Physics Globals﹞內的參數條件應設定在相同條件情形,當

4-2-4 啟動法碼與滑車的參數設定

中時間因素皆設定為1,擬真狀態則皆設定為150,以提升滑車的模擬的真實性。 Deactivate Script 撤銷一個腳本 Unphysicallize 解除物理化

Test 根據適當AB之間的測試,執行適當的output 軌道上除了設置Sensor01、Seneor02物件,在car出發點處另設置隱藏的 Sensor0偵測器,離stop擋板前15公分處也設置另一隱藏的Sensor03偵測器。此 外car與Sensor0的Z軸座標點需相同,當啟動滑車時﹝Key Waiter﹞的out端同時 輸出連接﹝Test﹞的In端,﹝Test﹞的參數內容選擇Not Equal,參數A所連接的 GetZ參數設定對象為car,參數B連接的GetZ參數設定對象為Sensor0,只要滑車 一移動,car與Sensor0的Z軸座標會不一致,True端便會立即輸出至三個﹝Send Message﹞的In端產生後續行為流程,其參數內容的設定如表4-2-2。

表4-2-2 Send Message的參數內容設定

參數名稱 message Dest

﹝Send Message﹞的參數對象為stop0,目的是當滑車移動時,會啟動rope1 script的程式,實驗桌上的繩索便會向滑輪端移動;參數message對象為Stop3 時,其目的是帶動法碼及法碼盤向下移動,程式設計如圖4-2-5,﹝Wait Message﹞

接受stop3的訊息後out端會輸出,並輸入至﹝Move To﹞及﹝Activate Script﹞

的In端,﹝Move To﹞的內容參數設定為weight1(法碼與法碼盤),且需使Loop out

圖4-2-5 ﹝Wait message﹞:stop3流程輸出後所輸入的模組

和Loop In形成迴圈才能正常運作,這時滑車一移動,法碼與法碼盤會同時間一 起向下移動。另外﹝Activate Script﹞的被執行腳本參數設定為wheel script,

如圖4-2-5。因此當滑車、繩索移動時,如圖4-2-6wheel Script的程式會被執

行,當中Rotate的參數 內容設定Y=1,指示的 對象是wheel,並調整 滾動的速度,此時滑車 啟動滑輪便會開始滾動。

﹝Send Message﹞參數對象設定為stop4,其目的則是當滑車移動時,會啟 動rope2 script的程式(圖4-2-11)內容,實驗桌側邊的rope2即會向下移動。

Sensor03的偵測器,距離擋板15公分處,目的是當﹝Wait Message﹞接受sensor03 script的stop5訊息(如圖4-2-7),代表滑車已經抵達擋板,繩索不再移動,所以 滑輪會停止轉動。模組設計方法是當流程輸入﹝Deactivate Script﹞(如圖 4-2-8),參數設定Script對象是Wheel Script,藉以解除撤銷Wheel Script的腳 本,而﹝Unphysicalize﹞目的是解除滑車的物理化,避免car script程式設計 中﹝Modify Physics Globals﹞的Z軸加速度參數設定值,持續影響滑車而造成 滑車碰撞擋板後產生翻轉的情況。

圖 4-2-6 wheel script 的程式設計

圖 4-2-7 sensor03 Script 的程式設計圖

圖4-2-8 ﹝Wait message﹞:stop5流程輸出後所輸入的模組 2.偵測滑車的移動

實驗室中共設置四個偵測器(sensor),如圖4-2-9,當中sensor0、sensor03 於實驗室中為隱藏狀態,操作者於本實驗室中是無法看見此兩偵測器的實體。而

圖4-2-9 虛擬實驗室中sensor的設置圖

sensor01及sensor02是偵測滑車速度及滑車從出發點至偵測器所花費的時間,程 式設計方式同實驗一「力與加速度間關係的實驗」。sensor0設置的目是當滑車 經過此偵測器,會啟動繩索、法碼同步移動及滑輪轉動;sensor03設置的目的則 是當滑車經此偵測器會停止滑輪轉動及解除滑車的物理化屬性。

3.繩索的移動

繩索移動的設計,將繩索分成實驗桌上部份的rope1及側面和地板垂直部分 的rope2。當模擬繩索移動時,rope1需要與滑車結合並產生縮短的現象,而rope2 則產生延伸變長的情形,下方懸掛法碼及法碼盤。這時運用﹝Set Component﹞、

﹝Bezier Progression﹞、﹝Scale﹞模組可以完成繩索縮小或變長的功能。圖 4-2-10兩段繩索的程式設計圖,表4-2-3則是運用的程式設計模組表。

表4-2-3 rope scrip的程式設計模組表

模組名稱 模組功能

Bezier Progression 在給定的時間,根據一2D貝茲曲線於最大與最 小值的範圍內,產生內插值

Set Component 將多個component組合成一個變數

Scale 縮放3D實體

圖4-2-10 rope1 Scripr及rope2 Scrip的程式設計圖

圖 4-2-11 Bezier Progression 的參數設定 程式設計圖中,stop0及

stop4的 訊 息皆 是滑 車 一移 動 即 立 刻 接 送 而 無 時 間 延 遲,rope1、rope2物件的中 心點需設在滑輪端,讓rope1 向滑輪端縮減,rope2向地板 端 延 長 , rope1 script 的

﹝Bezier Progression ﹞參 數 ( 圖 4-2-11)A 設 定 繩 索 的 起始大小,B設為終點大小,

並且以迴圈的方式連

接﹝Set Component﹞、﹝Scale﹞兩模組,Duration的設定與滑車從出發至碰撞 擋板所花費的時間一致。﹝Progression Curve﹞的參數設定,採繩索在縮小過 程的總時間固定不變下,微調貝茲曲線修正rope1移動的速度,後進行預覽繩索 與滑車接觸點結合的情況,直到兩者在移動過程成功產生結合的現象為止。﹝Set Component﹞的目的是繩子在實驗室Z軸方向產生伸縮現象,伸縮的程度由﹝Set Component﹞的Component2參數,與所連接﹝Bezier Progression﹞參數輸出的 內插值 Value 控制。而繩索X、Y兩軸的粗細則固定不變,由﹝Set Component﹞

Component1與Component3參數設定之。此外要配合﹝Scale﹞才能產生繩索3D實 體的縮放,參數中的Absolute必須選取,繩索變化的情況才能符合目前設定的環 境。rope2 Scrip的程式設計方式同rope1 Scrip。

第三節 系統質量與加速度間的關係