EJS 物理教學動畫設計工作坊 (教師: 黃 福坤)
登入
主題大綱

點選課程每個區段左邊可以寫下個人針對該區段的筆記,點選課程資源連結時,網頁上方連結後也有相同圖案,可以註記針對該資源的筆記.若點選本網頁上方圖案則可記錄針對本課程的筆記. 歡迎多加利用!
(0)
課程公告區

科學教學動畫設計製作工作坊
各位參與的伙伴大家好:
一般我所舉辦的EJS動畫設計製作工作坊都是以三天的活動為主.並要求參與這事先有一個想要完成的動畫構想. 這樣參與者才有可能從實際製作一個完整的動畫過程 真正熟悉並且會真正的繼續使用!通常短期的講述只是讓參與者知道其相關功能,但是能持續使用者相對很少!
工作坊的目的在於讓 參與者瞭解
1. 如何利用EJS 設計教學動畫: EJS 本身的設計與科學解題的關連
2. 如何利用EJS 作為教學工具Modeling Tool
兩目標為主,並且讓參與者有實際操作的經驗.
工作坊結束後歡迎各位繼續利用本園地 討論相關問題!

為方便一般網友了解 將此課程公開,但是為了部分隱私原因 也同時隱藏一些連結與討論

  • 討論區公告訊息(0 篇主題,0 篇留言)


    一般通告與新聞

  • 討論區 疑難雜症區(0 篇主題,0 篇留言)

    有關課程任何相關問題討論區


(1)
Easy Java Simulation

安裝Easy Java Simulation 的步驟:

  1. 下載 2006Easy Java SImulation 程式 或  2008版本
  2. 下載後解壓縮到任何一個目錄下 例如 c: (則會產生c:Ejs 的目錄) 說明影片
  3. 進入 Ejs 目錄 點選 EjsConsole.jar 便可執行 Easy Java Simulation
若是你點選 EjsConsole.jar 發現啟動的是 解壓縮程式 圖案也變成解壓縮程式的圖案
表示你的電腦沒有支援Java Run Time 或者因為後來安裝解壓縮程式將 .jar 檔案變成自動啟動壓縮程式
點選連結 瀏覽器是否支援java測試  若無法看到java程式請依照說明下載最新版java run time 或
點選 最新版 Java Run time 的連結 下載後安裝 Jave Run Time 應該就可以了!

或者觀看 點選EjsConsole.jar 卻啟動解壓縮程式的解決方法(影片)

(本課程中影片主要是根據2006年版本拍攝,下載2008年版本和教學影片內容稍有差異 )

舊版的範例簡易模擬動畫設計製作環境 Easy Java Simulation 使用說影片(檔案較大則有聲音)



(2)
注意事項與相關資料

使用 EJS 常見錯誤

  1. 使用變數前忘記先定義變數
  2. 儲存檔名以英文字母開始,檔名用英文字母與數字(不可用數字起頭)
    檔名請不要添加 中文或特殊符號(含空白)
    檔名請勿使用for,if, switch, true,false.int,double,final,... + - * / % | & () [] {} 等程式的關鍵字
  3. 整數與整數相乘除 結果是整數  1/2  結果是 0 , 1./2 或 1/2. 或 1./2. 結果才是 0.5

參數演化關係中 除了等加速度以外 其餘的情況請選用 Runge-kutta 五階誤差的數值方法

請不要用預設的 Midpoint 三階誤差的方法

Ejs安裝目錄 Simulations 下有很多動畫的範例 請同學抽空多參考

if(邏輯運算指令; 例如 if(x>5 || x<3)y=2; 也可寫成 if((x-5)*(y-3)<0)y=2;

if(邏輯運算指令;
else if(邏輯運算指令;
else 指令;

for(重複執行前指令  繼續執行邏輯判斷  執行後指令重複執行指令

其中指令不止一行時可以用 大括弧包住,替代一個指令的位置!

if(x>3) y=1;
else y=2;

if(x>3)y=1;
else if(x<1)y=0;
else y=1.5;

if(x>3){

 y=1;
 z=2;
}else {
 y=2;
 z=3;
}

建議 一旦使用括弧 先寫好完整括弧對 之後在內部添加內容,如
if(x>3){

}else{

}

先寫好以上結構,之後在括弧內寫指令
這樣比較不會忘記添加結尾的括弧
尤其需要好幾層的時候 又如
for(int i=0;i<n;i++){
 for(int j=i+1;j<n;j++){
 
 }
}

假設 x=5; y=3; 要將兩數值對調 不可以僅寫

x=y; // 此時已經將y的值放入 x 內,也就是 x,y 的值都是 3
y=x; // 此指令是要將 x的值(3)放入 y內 , 其實 根本沒有新的作用

應該要先定義另一個變數暫時儲存其中一個值 例如定義 z
z=x;// 將 x 的值 放入 z, 此時 z 記憶體的值是5
x=y; // 將 y的值放入 x, 此時x 的值變成 3
y=z; // 將z的值放入 y, 因此y 變成 5
以上步驟就達到 x,y 互換的目的.




(3)





    (4)
    進度

    以下列出預定上課的內容與同學應該學會的

    1. 會安裝 JDK 與 EJS (09/28)
    2. 了解並懂得EJS 的介面與基本使用 (10/05)
      1. 知道如何瀏覽所附範例(例如簡諧運動)
      2. 如何執行與存檔 以及檔名前加底線的功用
      3. 如何添加按鈕 並設定功能
      4. 如何擺設不同物件(東南西北中或陣列擺設等)
    3. 了解並實做: 設計一個粒子於長方區內來回碰撞, 以及如何變成N個 (10/12)
      1. if 與 for 的使用
    4. 了解並懂得 EJS 的運作以及 model 內各頁面的功能
    5. 了解並實做一個單擺的運動
      1. 如何改變粒子形狀,將箭頭改為線段等 知道物件都有很多屬性可修改
      2. 如何設計程式用滑鼠改變單擺長度與初速度( 如何自定函數,並設定滑鼠動作)
      3. 所需數學函數 Math.sin/ Math.cos/ Math.atan2(x,y) 以及常數 Math.PI (π)
    6. 了解並實做利用 多個粒子/箭頭/軌跡. ...等元件
    7. 了解並實做自訂函數 以及函數的格式
    8. 了解並實做利用 繪製曲線圖AnalyticCureve 繪製給定的函數或曲線關係
    9. 了解並實做利用事件的功能 處理碰撞與反彈的瞬間突發事件
    10. 知道並實做利用讀取使用者所按鍵盤的鍵 以及 滑鼠的座標值 控制動畫內容

    以下的影片上方都有控制鈕 可以操控影片暫停或播放等動作

    自訂函數的格式說明:以行星運動為例

    public  double calF(double dx,double dy){// public 表示此函數在ejs內各處都可以使用
    double r2,r3;
    r2=dx*dx+dy*dy;
    r3=r2*Math.sqrt(r2);
    return G*m1*m2/r3;
    }

    定義以上函數以後 便可以於需要時使用
    例如 fx=calF(2.5, 3.2); 變會將 2.5帶入函數中的dx,3.2帶入函數中的dy 然後將計算結果放入 fx的變數內

    函數中也可以加上條件而傳回不同值

    例如

    public double calF(double x){
    if(x<0)return 0.;
    return 5.;
    }

    則以上函數執行時 若參數x<0傳回 0 , x>=0 則傳回5
    表示當x<0時物體不受力 但是x>0時受到固定的力作用




    (5)
    關於JAVA高階參考資料




    (6)
    好用的工具

    使用程式有問題時可以藉由安裝以下程式擷取電腦畫面的螢幕 說明問題情況
    點選後安裝 並啟動後即可使用
    你可以擷取整個電腦桌面 或者某個特定視窗 或者自行定義要擷取的畫面區域
    程式預設按下  PrtScr 鍵時會開始擷取畫面
    若是選擇自行定義擷取區域 則需利用滑鼠先選擇區域的左上角 然後選擇區域的右下角
    選完便開始擷取畫面
    本程式的好處是擷取完畫面後 包含一些簡易工具 讓你可以加工說明
    例如加上箭頭 輸入文字等功能 請自行試試看 應該是一個蠻好用的小工具!




    (7)
    計算機概論



    (8)
    專題製作需要說明事項

    1. 三維的顯示與物件使用 含三維物件的旋轉:使用三維畫圖區DrawingPanel3D 類似二維設定x,y,z座標與對應屬性
    2. 物件的顯示與消失:每一個物件都有顯示的屬性 該屬性內對應變數為true 則顯示 例如定義變數 show(資料格式為 boolean)預設值為 false,將粒子顯示屬性設為 show 則粒子不顯示,若添加勾選方塊 讓其對應變數為 show 則當勾選時  show值變成 true 於是粒子顯示,不勾選時則不顯示
    3. 作用力隨時間或空間變化的處理: 定義函數計算作用力 於函數內利用 if 指定判斷不同狀況下該傳回的數值
    4. 物件顏色的處理:定義變數 以便程式中變化其數值 例如 定義clr,red,blue等 變數 資料格式選擇 Object, 將red 預設值定為 new java.awt.Color(255,0,0) blue預設值定為 new java.awt.Color(0,0,255) 若將粒子顏色屬性定為clr , 而clr=red 則顯示紅色 clr=blue則顯示藍色. 止於何時定就要看你自己如何設計!
    5. 初始化的處理:初始化頁 通常僅程式開始執行 定義完變數後執行一次.若需要重複執行可輸入 _initialize();
    6. 控制桿數值特定區間的設定: 例如添加拉桿對應變數n,範圍最小0,最大15,  控制拉桿有標線數 若將其定為6, 並將下方最接近值選為true,則拉桿放開後數值僅出現於0,3,6,9,12,15 等六個位置  
    7. 添加斜面:有一個Plane的元件 指定一個端點的座標x,y,z然後指定通過該點斜面兩邊邊長與兩邊的向量座標(方向A/B屬性)
    8. 如何使用外積?複數? 例如 F=q*(E+VXB) 分別定義fx,fy,fz 依據定義寫下類似 fx=q*Ex+q*(vy*Bz-vz*By)即可 複數也是定義兩個變數如xr,xi 分別帶表實數與虛數值
    9. 如何用按鍵來控制?定義一個變數儲存按鍵數值(是0-255數字)例如變數定義為key資料格式選擇整數 DrawingPanel 內按鍵代碼 設為key, 則按下鍵盤某鍵時其對應電腦碼 會儲存於key變數內 例如按下a key值會變成65,b則變成66等.若需要執行指令則填寫於 按鍵指令的屬性內
    10. 讓兩個物件合而為一?油滴結合 這要自己想好油滴形狀的數學關係式 利用多邊形去描繪!
    11. 滑鼠的操控:DraeingPanel內有滑鼠x,y座標的屬性 定義變數如mx,my然後將其座標屬性分別設成mx,my 則滑鼠座標會儲存於該兩個變數內
    12. 顯示文字!有文字的元件設定要顯示的文字與座標即可
    13. 圖片的使用:有圖片的元件 圖片可以是gif或jpg,但是需要放在Simulation目錄下(子目錄也可以) 選擇圖片檔名 並設定圖片座標寬高等屬性即可
    14. 背景動物體不動 (帆船的範例)讓背景的點或線反方向移動
    15. 1/p+1/q=1/f:例如已知 p,f 則轉換成 q= pf/(p-f);
    16. 不知道如何表達動量守衡的傳遞語法;能量守衡的考慮
      其實重點是只要程式作用力分析是正確的自然就會滿足能量守恆與動量守恆的關係 而不是反過來的方式!
    17. 如何求兩球碰撞連心線分量或反射線?
    18. 背景移動(xmin+dx,xmax+dx,ymin+dy,ymax+dy)




    (9)

       
    整體變數與區域變數
    函數的定義

    public void action(){
     if(x<0)x=0;
    }
    public double calF(double x1,double x2){
      if( Math.abs(x1-x2)<size)return -k*(Math.abs(x1-x2)-size);
     return 0.;
    }




    (10)






    尚未登入. (登入)

    since 2011/06/20 18:23