2018年2月5日 星期一

惠更斯原理示意圖

惠更斯原理示意圖
 日期:2018/2/5
惠更斯原理(Huygens principle)在基礎物理1及選修物理上各會出現一次,雖然都只有定性敘述,但是為了解釋這個原理,我必須把圖畫得非常精準才行,下圖是我以前用  LibreOffice Draw 繪製的惠更斯原理示意。但是這個圖上每個元件的位置都要手動去調整,如果想要增加點波源的數量或是改變波長,等於整張圖都要重畫,因此我又想到用 GeoGebra 來畫類似的圖。
使用 LibreOffice Draw 繪製的惠更斯原理示意圖


球面波示意圖繪圖步驟

1. 新增控制波長 λ 的數值滑桿
λ = Slider(0.5, 2, 0.1)
2. 新增控制點波源數量 n 的數值滑桿
n = Slider(4, 25, 1)
3. 新增點波源O的位置
O = Point({0, 0})
4. 畫出第1個球面波前位置,為了讓視覺效果稍微好一點,我是選擇半徑 2λ 處作為第1個球面波前位置
c = Circle(O, 2*λ)
5. 畫出第1個球面波前上的點波源
source = Sequence(Point(c, i), i, 0, 1, 1 / n)
上式中 Point(c, i) 是指在二次曲線 c 上面畫點,i 用來指定畫點的位置。Sequence 當中的  i, 0, 1, 1 / n 是指將二次曲線 c 分成 n 等分,每隔相同的距離畫一個點。
 6. 以第1個球面波前上的點波源為圓心,畫出向外傳播的球面波
wave = Sequence(Circle(Element(source, i), λ), i, 0, n, 1)
上式中 Element(source, i) 是將串列 source 當中的第 i 個元素取出,丟到 Circle 指令當中作為圓心。
7. 畫出第2個球面波前位置
c = Circle(O, 3*λ)
再將每個元件調整成自己喜歡的樣子之後,成果如下圖,但是會有往內部傳播的球面波,看起來有點醜。
惠更斯原理球面波示意圖:沒有擋住中心
8. 為了擋住往內部傳播的球面波,再畫出一個圓形,半徑比 2λ 稍微小一點,圓形內部填滿為白色100%。 加上這個圓形之後圖形比較不會那麼雜亂。
e = Circle(O, 2*λ - 0.1)
圓形的屬性視窗
惠更斯原理球面波示意圖:擋住中心
惠更斯原理球面波示意圖:改變波長 λ
惠更斯原理球面波示意圖:改變點波源數量 n

球面波傳播過程動畫繪圖步驟

1. 設定波長 λ = 2、點波源數量 n = 25、週期 T = 2。新增點波源O的位置
O = Point({0, 0})
2. 新增控制時間 t 的數值滑桿,最小值0,最大值 2T,增量0.1。
t = Slider(0, 2*T, 0.1)
開啟 t 的屬性視窗,調整動畫速度為1,重複為遞增1次。其實可以在上一行的指令同時設定這兩樣,但是指令長度會增加很多,並不方便。
3. 畫出第1個球面波前位置
c = Circle(O, 2*λ)
4. 畫出第1個球面波前上的點波源
s_1 = Sequence(Point(c, i), i, 0, 1, 1 / n)
5. 設定從第1個球面波前上的點波源向外傳播的球面波半徑
r_1 = If(t <= T, λ*t / T, λ)
當 t ≤ T時,半徑隨時間增加;1個週期後固定為 λ。
6. 以第1個球面波前上的點波源為圓心,畫出向外傳播的球面波
w_1 = Sequence(Circle(Element(s_1, i), r_1), i, 0, n, 1)
7. 當時間 t ≥ T 時,畫出第2個球面波前位置
d = If(t >= T, Circle(O, 3*λ))
下圖為到這個步驟為止的成果。
球面波傳播過程動畫到步驟7為止的成果
8. 畫出第2個球面波前上的點波源
s_2 = Sequence(Point(d, i), i, 0, 1, 1 / n)
9. 設定從第2個球面波前上的點波源向外傳播的球面波半徑
r_2 = If(T <= t <= 2*T, λ*(t / T - 1), λ)
當 T ≤ t ≤ 2T 時,半徑隨時間增加;2個週期後固定為 λ。
10. 以第2個球面波前上的點波源為圓心,畫出向外傳播的球面波
w_2 = Sequence(Circle(Element(s_2, i), r_2), i, 0, n, 1)
11. 當時間 t ≥ 2T 時,畫出第3個球面波前位置
e = If(t >= 2*T, Circle(O, 4*λ))
12. 加上一個會隨著時間往外擴張的圓形
f = If(t > 0, Circle(O, (2 + t / T)*λ))
13. 加上內部填滿為白色為圓形,用來擋住往內部傳播的球面波。
g = Circle(O, 2*λ - 0.1)
h = Circle(O, 3*λ - 0.1)
14. 開始動畫,成果如下圖。
球面波傳播過程動畫

結論

  雖然我只寫了圓形波的畫法,不過我相信各位能夠自己想出直線波的畫法。而且這只是我自己想到的作法,一定還有其它的作法可以達到同樣的效果,甚至效果比我的圖還要好。如果各位有更好的作法,請在下方留言,跟我分享一下,感謝各位!

相關指令的官方說明書

  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 


2018/2/8 更新

已經檔案上傳至 GeoGebraTube,可以線上操作或下載檔案
  1. 惠更斯原理範例_圓形   https://ggbm.at/mXYFuB7k 
  2. 惠更斯原理範例_圓形動畫   https://ggbm.at/gBV2yAeE

沒有留言:

張貼留言