嚕嚕嚕,Ejs的教學已經到第五堂課了~
.
((不對吧......那前面呢那幾堂呢?為什麼都沒有看到~
如果你有這個問題,應該是代表你很(不幸)的提早亂入到這裡wwww
.
因為物裡課的下學期也是要寫一些上課學到有關EJS的報告
然後覺得還要弄網頁還要上傳FTP還會不小心把同學的作業蓋掉什麼的實在是太麻煩了
所以乾脆打在部落格算了XD
.
期中報告時間快到了,不才沒時間從第一篇寫起,直接往後跳吧
.
((小編表示大家的疑問應該是標題不是說是第六堂課嗎?
.
好來好啦,這是第六堂
.
今天要看的是這篇
就是講解說一顆球在一個有摩擦力的地板上轉動,然後會變成什麼樣子
.
這影片是從月亮的教學網頁那裡弄過來的,
雖然是用英文,不才也聽不太懂,但似乎是個很詳細的說明,裡面有提到轉動和移動的不同
影片最後面有說如果掉到有摩擦力的影片為什麼會讓球移動之類的
.
還是一樣,首先是打開Ejs
.

然後打開線上圖書館
.

點開"瀏覽目錄",選擇右上方的"Classical Mechanics"
裡面的"Newton's Second Low"
再裡面的"Force,Acceration"
的裡面的Slipping And Rolling Wheel
喔~原來今天要講的事有關輪子的事
(廢話...
.

按下下載之後,沒多久他會問你要把這東西存在哪裡
就隨便選一個地方吧
.

按下開啟之後,就會出現這堆東西了
.

先按一下主控台綠綠的撥放件進行模擬
看看這東西到底是幹嘛用的
.
如圖,這是一個模擬物理現象的視窗
上面那個黃黃的是在轉動的球
他會在原地打滾,然後因為摩擦力的關係,球球會向前進
.
然後他會留下軌跡
感覺跟會到處尿尿做記號的小狗差不多
.

然後模擬物理現象的視窗的下面有個記錄表格
.
根據不才的神猜
紅色的應該是角速度
然後黑色的是球體本身的速度
.

佳下來來看看這個模擬球球轉動的小程式是怎麼產生的吧~
首先他需要兩個視窗
.
上面有鎖鍊(美江興奮了?)的是主視窗
空空的那個是另外一個視窗
.
感覺跟C++的 int main差不多XD
.


接著來看看主視窗裡面偶些什麼吧~
主要來說,drawingPanel是中間有圖片的那堆
controlPanel是向方那一欄有按鈕有輸入框有文字的地方
upperPanel是上方那堆
.
DrawingPanel裡面有一些東西
ground是綠色地面
wheelGroup裡面有兩個東西,一個是球體,另一個是球上面那個非常不明顯的小黑點
.
然後rimTrail是記錄軌機用的線
forceArrow是在球的正下方的鍵頭,這裡剛剛好不見了
.

controlPanel裡面又有兩個小Panel
一個Panel是裝按鈕用的
另一個是裝小小Panel,裡面有一個文字和輸入框
.
這種類似C++封裝的概念(錯誤的現學現賣)
這種一直用Panel又Panel又Panel包起來的圓音是比較好管理。
排版也比較乾淨
.

這個是上方的Panel
也適用這種方式呢
.

比較要注意的,眼尖大家或許很好奇,範本裡面的球會轉動
怎麼讓他轉動呢?
.
原來在wheelGroup裡面又有一個做標,
做標的原點是在原做標的( x , R )上面
新的座標和原座標的角度是-theta
.

如果話圖來表示,差不多是這個樣子
.
其中物件Point 和 ball都在薪的座標上
如果 x 的數值加大,球和點就會移動
-theta 值改變,球和點就會轉動
.
恩
.

rimTrail是一個記錄軌跡的東西
在圖形表格裡面也常常出線
.


而圖形表格視窗裡面有這些東西
.
有一個話圖形表格的原件
還有一個黑線,一個紅線
.

這個是黑線,是速度對時間
.

這個是紅線,是角速度對時間
.

上面比較重要的是"markerPos"
這是一個二維座標
.
主要是給記錄軌跡的原件使用
.

來看看變數吧
.

這些是一些初始直
.

在參數演話關係裡的微分函數
.

點開下面的事件,可以看到stop Slipping
這段程式碼是說,如果"slipping"不是正確的
((slipping預設值是True
也就是說,如果slipping=False
就回傳1,0
不然就回傳forceDirection*(omega*R-vx)
forceDirection是角速度-球的速度
.

在參數演話關係裡的Transfoem Vector
這段程式碼是把球上面的小點座標傳回來,給記錄球的記錄軌跡用
.

然後這是設定"重新設定時間"的函數
.

這是設定"重新設定滑動"的函數



