• 沒有找到結果。

瞬時速度虛擬實驗之程式設計

第四章 虛擬物理實驗室--運動學實驗之程式設計

第二節 瞬時速度虛擬實驗之程式設計

2.感測器能感知滑車上長短不同的旗尺經過的時間,自動算出不同的 旗尺經過感測器的平均速度。

3.遇障礙物能起碰撞作用而有擬真效果。

4.設計滑車沿不同斜面滑下時呈現經過的時間及平均速度。

5.能以鍵盤控制移動感測器的位置,將與起始點的距離顯示於螢幕。.

6.能將測得的時間及平均速度顯示於螢幕。

7.操作方式呈現於螢幕上

此虛擬實驗主要是要測得一物件在極短時間內的速度,為求達到擬真效果,

在軌道下加一斜角,為達成此設計構想,所有相關物件皆經模組物理化,讓滑車 在ㄧ般的物理條件下,受重力影響沿斜面自然滑下,不加任何程式控制其運動。

本組實驗共設計三種斜角,為 15 度、30 度、45 度,每種斜角又有 5 公分、10 公 分、20 公分、30 公分的感測片,為了讓感測器能偵測到這些感測片通過的時間,

在每個感測片的起端及終端皆有組偵測點,以測得不同長度的感測片通過感測器 的時間,由此推算平均速度,再利用外推法求瞬時速度。

圖 4-8 偵測瞬時速度方式圖

經此二關鍵設計就可達成構想的目標,此瞬時速度虛擬實驗的起始畫面與上ㄧ節 等速度運動的起始畫面大致相同,虛擬實驗的物件則重新建模,起始畫面及虛擬 實驗物件如下所示:

圖 4-9 瞬時速度虛擬實驗的起始畫面

偵測器 senbar0 senbar00 senbma1 Senbmove 旗尺 f05 f05s01 f05s02

滑車 carbody orbstar

滑軌 orbit

orbstop 實驗桌 adesk

斜角 anger15

圖 4-10 瞬時速度虛擬實驗物件配置圖

下圖為瞬時速度虛擬實驗程式設計總圖,其中 1.MouseCam(滑鼠相機) 程式設計 說明見(附錄 1),2.顯示文字由 12 個 Text Display 模組所作用。 

1.滑鼠相機 

2.顯示文字 

4.啟動並物理化  3.物理化 

5.移動感測器位置

測距離

6.測通過的時間

3.物理化相關的物件,放於地板 floor30 上的實驗桌 adesk 、斜角 anger30、滑 軌 orbit、擋板 orbstop ,皆經模組 Physicalize 物理化,模組 Physicalize 是 本虛擬實驗的重點,在此詳加介紹:

4.啟動並物理化 5.移動感測器位置測距離 6.測通過的時間

In: 輸入觸發此模組 Out: 輸出完成此物理化

Fixed: 若勾選, 則此物件固定不動 (不受重力等力量的影響).

Friction: 定義此物件的摩擦係數,設定為 0 表無摩擦. 設定為 0.1 為冰的 表面設定為 3 表非常粗糙的表面.兩物件之間的滑動取決於二物理 化物件的摩擦係數相成的結果。

Elasticity: 定義二物理化物件間的彈性係數 定義數值> 1.0 會不停的跳動.

定義數值< 0.2 則會浪費 CPU 資源.

Mass: 物件的重量,單位為噸 [tons]. 當為基底的物件不可訂太小,二碰撞 物件的重量不可相差太大。

Collision Group: 限定碰撞群組。

圖 4-12 模組 Physicalize 物理化參數及設定圖

Start Frozen: 若勾選, 則此物件起初不受重力影響,直到受碰撞等訊息觸 發為止。

Enable Collision: 若勾選,則允許二物理化物件間的碰撞。

Shift Mass Center: 移動物件中心。

Linear Speed Dampening: 線性速度阻尼。數值 0.0 對物件的線性速度無影 響,數值 1.0 表物件的線性速度每秒減少為原來的 30%,數值 0.1 表物件的線性速度每秒減少為原來 的 90%。

Rot Speed Dampening: 轉動速度阻尼。數值 0.0 對物件的轉動速度無影響, 數值 1.0 表物件的轉動速度每秒減少為原來的 30%, 數值 0.1 表物件的轉動速度每秒減少為原來的 90%。

Surface Name: 物件的物理表面名稱。當"Physicallize"加到物件時,即以 物件的 mesh's name 自動產生。

Convex: 凸面體。當"Physicallize"加到物件時,即以物件的 mesh's name 自動產生。

負責物件物理化的物理引擎採用的單位是 MKS 制(即公尺、公斤、秒),雖然我 們能改變一些物理常數,但決不能違背所有的物理定律。圖 4-12(模組物理化 參數及設定圖)的右半部,即為本實驗大部分物件的物理參數設定。

4.啟動並物理化。有些物件不能ㄧ開始就 Physicalize,滑車就須等訊號到來才 啟動 Physicalize,否則一進入畫面,滑車就開始滑下,不能觀測整個實驗的 進行,所以滑車 carbody 先並排接上模組 WaitMassage 及模組 Key waiter,

當滑鼠左鍵點按滑車 carbody 或按鍵盤 Space 鍵,滑車 carbody 接到訊號,

設定,以下為模組 Modify Physics Globals 的參數設定圖,其中 Physics Time Facter 內定為 1,現改為 0.2,其餘皆為內定參數,不作更動。

下圖為滑車 carbody 程式設計總圖

以下則為滑車 carbody 的相關模組功用的總整理 表 4-5 滑車 carbody 的相關模組功用解說表 Wait Massage 等待接收一個訊息

Key waiter 等 待 按 鍵按 下 的 訊息來 觸 發 事 件 Physicalize 使 一 個 物 件 符 合 物 理 學 世 界 的規範 Modify Physics Globals 修改物理學全局變量設定

圖 4-14 滑車 carbody 程式設計總圖

圖 4-13 模組 Modify Physics Globals 的參數設定圖

5.移動感測器位置及測距離:底下為感測器 Senbar0 的程式設計,與第一節

Sensor1 的模組設計類似,二個作用包括接收鍵盤按鍵 Q、按鍵 1 的訊息透過 Switch On Key 、Per Second、Translate、移動感測器 Senbar0 到所欲測量的 位置,另一個作用是顯示感測器 Senbar0 與滑車起始位置 Senbar00 的距離 以參數運算 Get distance 算出 Senbar0 與滑車起始位置 Senbar00 的距離,由 Mutiplcation、 Division 乘除二運算控制有效數字,再匯給 Text Display 將 文字呈現於螢幕上。若於模組 Text Display 上按滑鼠右鍵,現 construct,點 Add Parameter Input,在 Parameter Type 的下拉選單選 String,就可在模組 Text Display 上加一字串參數,編輯此參數,寫入所要的敘述,即可在呈現的數 字後加上所需的單位名稱 。

圖 4-15 感測器 Senbar0 的程式設計圖

6.測通過的時間:在旗尺 f05 上有二條感測帶,前為 f05s01,後為 f05s02,

分別與被隱藏的偵測器 senma1 起作用,在此用到一個模組 Box Face Intersection 主在偵測第一物件的外方體與第二物件的面使否有碰撞,其模組及參數設定如 下:

當旗尺 f05 上的 f05s01 碰到偵測器 senma1 時,由 True 輸出觸發計時器 Chrono 的 on 端,開始計時。當旗尺旗尺 f05 上的 f05s01 與偵測器 senma1 無碰撞時由

圖 4-17 旗尺 f05 程式設計圖

圖 4-18 模組 Box Face Intersection 參數設定圖 In: 觸發模組

True: 若二物件有作用則由此輸出 False: 若二物件無作用則由此輸出

Entity 1: 第一物件名稱(取其外方體 ) Entity 2: 第二物件名稱(取其面)

false 輸出,此時 False 須接到 In,成ㄧ迴圈,不停偵測,若不接成迴圈,則模 組只執行ㄧ次,就此停止,程式無法進行下去。同理,當第二個模組 Box Face Intersection 上的 f05s02 碰到偵測器 senma1 時 ,由 True 輸出觸發計時器 Chrono 的 OFF 端,停止計時,此時間差經 Division 除以 5(因在滑車 carbody 的程式 設計中,曾於模組 Modify Physics Globals 的 Physics Time factor 由 1 改為 0.2,拉長時間,以利觀察)再分二路,一路經 Mutiplcation、 Division,有 效數字化後由 Text Display 顯示出,另一路經單位換算 5cm Division÷100=

0.05m,ms Division÷1000=s,再經 Division 相除得速度,單位為 m/s,經 Mutiplcation、 Division 有效數字化後由另一個 Text Display 顯示出。

下表為此部分相關模組的功用解說:

表 4-6 旗尺 f05 程式設計相關模組功用解說表

Box Face Intersection 偵測第一物件的外方體與第二物件的面使否 有碰撞

Chrono (計時器) (ON 為 開 始 計時,OFF為停止計時) Division 除以

Mutiplcation 乘以

Text Display 將文字呈現於螢幕上

相關文件