# 惠更斯原理示意圖 > 作者:王一哲 > 日期:2018/2/5 本次課程檔案已上傳至 GeoGebraTube,可以線上操作或下載檔案 1. 惠更斯原理範例 圓形 https://ggbm.at/mXYFuB7k 2. 惠更斯原理範例 圓形動畫 https://ggbm.at/gBV2yAeE </br> <img height="80%" width="80%" src="https://lh3.googleusercontent.com/Rgy0ADm6LhmlJEfpGXfDmfgrXWAlQJWnfxsLtojvtMkTEY0gdqjtBexQUkTlED_db8-D20DUnG9Cyq5aalwygWbUYMzQC1o3Mm1VNpo-SqUHMP1JibKuoLuBgv4ohN_yxIpjV-k6" style="display: block; margin-left: auto; margin-right: auto;"/> <div style="text-align:center">使用 LibreOffice Draw 繪製的惠更斯原理示意圖</div> </br> ## 球面波示意圖繪圖步驟 1. 新增控制波長 λ 的數值滑桿 ```latex λ = Slider(0.5, 2, 0.1) ``` </br> 2. 新增控制點波源數量 n 的數值滑桿 ```latex n = Slider(4, 25, 1) ``` </br> 3. 新增點波源O的位置 ```latex O = Point({0, 0}) ``` </br> 4. 畫出第1個球面波前位置,為了讓視覺效果稍微好一點,我是選擇半徑 2λ 處作為第1個球面波前位置 ```latex c = Circle(O, 2*λ) ``` </br> 5. 畫出第1個球面波前上的點波源 ```latex source = Sequence(Point(c, i), i, 0, 1, 1 / n) ``` 上式中 Point(c, i) 是指在二次曲線 c 上面畫點,i 用來指定畫點的位置。Sequence 當中的 i, 0, 1, 1 / n 是指將二次曲線 c 分成 n 等分,每隔相同的距離畫一個點。 </br> 6. 以第1個球面波前上的點波源為圓心,畫出向外傳播的球面波 ```latex wave = Sequence(Circle(Element(source, i), λ), i, 0, n, 1) ``` 上式中 Element(source, i) 是將串列 source 當中的第 i 個元素取出,丟到 Circle 指令當中作為圓心。 </br> 7. 畫出第2個球面波前位置 ```latex c = Circle(O, 3*λ) ``` 再將每個元件調整成自己喜歡的樣子之後,成果如下圖,但是會有往內部傳播的球面波,看起來有點醜。 </br> <img height="80%" width="80%" src="https://lh4.googleusercontent.com/S971nuizaOgPWrgwwcHTBxo3Utj09SbHbdpXmbXZkq7pJ7O2hf07e_Ns-hTcxnA9_aprkslLI96ifl_Tk3POlTp3Myp4dmR1P9wAkMCV-BEtYf731SLKxrNsMDYNs0q2mPOOPRm3" style="display: block; margin-left: auto; margin-right: auto;"/> <div style="text-align:center">惠更斯原理球面波示意圖:沒有擋住中心</div> </br> 8. 為了擋住往內部傳播的球面波,再畫出一個圓形,半徑比 2λ 稍微小一點,圓形內部填滿為白色100%。 加上這個圓形之後圖形比較不會那麼雜亂。 ```latex e = Circle(O, 2*λ - 0.1) ``` </br> <img height="100%" width="100%" src="https://lh6.googleusercontent.com/GGI2Tp6B5JgJCudFJcCIt6E9PG7yKU9hSCsSuXn_kFHg3xLKJZ4IkNjoWfzTLcid_G-ZQevftDYRVaqu004Ecipayi6fcMcMvHofdbvn8ZnyOHyui5rQ_Lt21kwekWCovZAdo_UO" style="display: block; margin-left: auto; margin-right: auto;"/> <div style="text-align:center">圓形的屬性視窗</div> </br> <img height="80%" width="80%" src="https://lh3.googleusercontent.com/WJgstAs5OBkfsryuv9XE4dRzYelZ6NCnxhY1Xm65f3PKiVe_XlILtMbtooMPzElQs6uerAJgkuEnXS9KT6eUVLqDDvX-S9DJJi-aaE2zPKr_ghRY-buTAxpyHM_6KPtMQrTEpnlB" style="display: block; margin-left: auto; margin-right: auto;"/> <div style="text-align:center">惠更斯原理球面波示意圖:擋住中心</div> </br> <img height="100%" width="100%" src="https://lh5.googleusercontent.com/-H7XhTOPYYkIRwJhtGSVSnbRwdDTnaJ4fsER0JTZ6Jl1Uso9NgFYzuj-hnRLjlSZNn1Ha1cdKnG5OCdzLvjFh-8PHckHNgt1NDoZ2b3N856V_FxA3ITYgQbRgl33Wfg3F-dQoIJl" style="display: block; margin-left: auto; margin-right: auto;"/> <div style="text-align:center">惠更斯原理球面波示意圖:改變波長 λ</div> </br> <img height="100%" width="100%" src="https://lh3.googleusercontent.com/W5mTuxQmXIs8LRqmF1q6a6cg_FrUaN9f97k2lSCgZTnvzzEUCTwddd7sn1X8iL0HFWyt1g4l-xTM0TnatZkrECWjMXwoMboKQRRkuyIBjHlEIDsOjyIoB-3q8HOvWAMmSCEjzJ2r" style="display: block; margin-left: auto; margin-right: auto;"/> <div style="text-align:center"> 惠更斯原理球面波示意圖:改變點波源數量 n</div> </br> ## 球面波傳播過程動畫繪圖步驟 1. 設定波長 λ = 2、點波源數量 n = 25、週期 T = 2。新增點波源O的位置 ```latex O = Point({0, 0}) ``` </br> 2. 新增控制時間 t 的數值滑桿,最小值0,最大值 2T,增量0.1。 ```latex t = Slider(0, 2*T, 0.1) ``` 開啟 t 的屬性視窗,調整動畫速度為1,重複為遞增1次。其實可以在上一行的指令同時設定這兩樣,但是指令長度會增加很多,並不方便。 </br> 3. 畫出第1個球面波前位置 ```latex c = Circle(O, 2*λ) ``` </br> 4. 畫出第1個球面波前上的點波源 ```latex s_1 = Sequence(Point(c, i), i, 0, 1, 1 / n) ``` </br> 5. 設定從第1個球面波前上的點波源向外傳播的球面波半徑 ```latex r_1 = If(t <= T, λ*t / T, λ) ``` 當 t ≤ T時,半徑隨時間增加;1個週期後固定為 λ。 </br> 6. 以第1個球面波前上的點波源為圓心,畫出向外傳播的球面波 ```latex w_1 = Sequence(Circle(Element(s_1, i), r_1), i, 0, n, 1) ``` </br> 7. 當時間 t ≥ T 時,畫出第2個球面波前位置 ```latex d = If(t >= T, Circle(O, 3*λ)) ``` 下圖為到這個步驟為止的成果。 </br> <img height="60%" width="60%" src="https://lh4.googleusercontent.com/xbMfCij_2VARmgS6O2IEeoj-sF57ZLgMabBfDzO3vKd8KVbJ4FaI8i72UwIh-u1aHWgUWUC-Nnquw3pqQCAOlAaGkujziCWUh90a3b_F0ONG8M8_LiltyDs9iTfUKXbeVLz-ba7W" style="display: block; margin-left: auto; margin-right: auto;"/> <div style="text-align:center"> 球面波傳播過程動畫到步驟7為止的成果</div> </br> 8. 畫出第2個球面波前上的點波源 ```latex s_2 = Sequence(Point(d, i), i, 0, 1, 1 / n) ``` </br> 9. 設定從第2個球面波前上的點波源向外傳播的球面波半徑 ```latex r_2 = If(T <= t <= 2*T, λ*(t / T - 1), λ) ``` 當 T ≤ t ≤ 2T 時,半徑隨時間增加;2個週期後固定為 λ。 </br> 10. 以第2個球面波前上的點波源為圓心,畫出向外傳播的球面波 ```latex w_2 = Sequence(Circle(Element(s_2, i), r_2), i, 0, n, 1) ``` </br> 11. 當時間 t ≥ 2T 時,畫出第3個球面波前位置 ```latex e = If(t >= 2*T, Circle(O, 4*λ)) ``` </br> 12. 加上一個會隨著時間往外擴張的圓形 ```latex f = If(t > 0, Circle(O, (2 + t / T)*λ)) ``` </br> 13. 加上內部填滿為白色為圓形,用來擋住往內部傳播的球面波。 ```latex g = Circle(O, 2*λ - 0.1) h = Circle(O, 3*λ - 0.1) ``` </br> 14. 開始動畫,成果如下圖。 </br> <img height="100%" width="100%" src="https://lh6.googleusercontent.com/ePXSOu5YS_m9YK5iSkvGz6VDK-ElODJqeMXHhVB8iG-1LJRQW0DkBFlMNDpGlq48r8jNejub0Zi_k8JZ2kSnqcrIeNqWsZA7EmdAiMz5V1XIn19aJAJUqxShJ5gRn58SrvgE98wt" style="display: block; margin-left: auto; margin-right: auto;"/> <div style="text-align:center"> 球面波傳播過程動畫</div> </br> ## 相關指令的官方說明書 1. 數值滑桿 https://wiki.geogebra.org/en/Slider_Command 2. 點 https://wiki.geogebra.org/en/Point_Command 3. 串列 https://wiki.geogebra.org/en/Sequence_Command 4. 圓 https://wiki.geogebra.org/en/Circle_Command 5. 元素 https://wiki.geogebra.org/en/Element_Command </br> --- ###### tags:`GeoGebra`