2018年2月8日 星期四

折射定律

折射定律
 日期:2018/2/8
折射定律 (law of refraction) 或稱為司乃耳定律 (Snell's law) 的型式為 n1 sin θ1 = n2 sin θ2 ,當 n1 > n2 時可以算出臨界角 θc = sin-1 (n2 / n1),若 θ1 > θc 則發生全反射。我已經將檔案上傳至 GeoGebraTube,連結在此 https://ggbm.at/Xcxnvk2r   

折射定律步驟

1. 新增控制兩介質折射率n1n2、入射角 α 的數值滑桿,指令為
n_1 = Slider(1, 2, 0.1)
n_2 = Slider(1, 2, 0.1)
α = Slider(0°, 89°, 1°)
再手動將 n1 調整為1,n2 調整為1.38,α 調整為 60°
2. 在原點上新增點 O,在 x 軸上畫直線作為兩介質的交界面,在 y 軸上畫直線作為法線
O = Point({0, 0})
f = Line(O, xAxis)
g = Line(O, yAxis)
3. 在法線上新增點 A,再拖曳到(0, 4),畫上過點 A 並垂直於法線 g 的直線 h
A = Point(g)
h = PerpendicularLine(A, g)
4. 將點 A 對點 O 順時鐘方向旋轉角度 α 變為點 A',畫出射線 i 作為入射光,再隱藏點 A'
A' = Rotate(A, -α, O)
i = Ray(O, A')
5. 畫出射線 i 與直線 h 的交點 B,再畫出角 BOA 作為入射角 θ1
B = Intersect(h, i)
θ_1 = Angle(B, O, A)
折射定律範例步驟 1 ~ 5 成果

6. 計算 n1 > n2 時的臨界角 θc
θ_c = If(n_1 > n_2, (asin(n_2 / n_1) / π*180)°, 0°)
上式中 asin = sin-1,但是輸出的單位為弧度 (rad),2π rad = 360°,為了將單位換回 ° 因此加上了 / π*180° 。
7. 計算折射角 β
β = If(n_1 <= n_2 || θ_1 <= θ_c, (asin(n_1 sin(θ_1) / n_2) / π*180)°)
上式中  || 代表,當 n1 ≤ n2 或  θ1 ≤ θc 成立時,用後面的式子計算折射角,若條件不成立則沒有定義折射角。
8. 在法線上新增點 C,再拖曳到(0, -4),畫上過點 C 並垂直於法線 g 的直線 k
C = Point(g)
k = PerpendicularLine(C, g)
9. 將點 C 對點 O 順時鐘方向旋轉角度 β 變為點 C',畫出射線 j 作為折射光,再隱藏點 C'
C' = RotateC, -β, O)
i = Ray(O, C')
10. 畫出射線 j 與直線 k 的交點 D,再畫出角 DOC 作為折射角 θ2
D = Intersect(k, j)
θ_2 = Angle(D, O, C)
折射定律範例步驟 6 ~ 10 成果
11. 畫出發生全反射時的反射光
l = If(n_1 > n_2 && θ_1 > θ_c, Reflect(i, g))
上式中 && 代表,當 n1 > n2 與 θ1 > θc 都成立時射線 i 對法線 g 的線對稱。但是在輸入指令之後進到屬性裡面看定義會變成
If(n_1 > n_2 ∧ θ_1 > θ_c, Ray(Reflect(O, g), Reflect(A', g)))
這是 GeoGebra 自動轉換的,不需要管它。
12. 將 n1 調整為1.5,n2 調整為1,試試看當 α 增加時會不會發生全反射,如果可以就成功了。
折射定律範例步驟 11 ~ 12 成果
13. 再將 n1 調整為1,n2 調整為1.38,α 調整為 60°。選取測量距離工具,用滑鼠左鍵在點O、B上各點一下,標示OB之間的距離。接著用同樣的作法,標示OA、AB、OC、OD、CD之間的距離。
測量距離工具選單
14. 用以下指令新增是否顯示角度、距離的核取方塊。
angle = Checkbox({θ_1, θ_2})
length = Checkbox({文字AB, 文字CD, 文字OA, 文字OB, 文字OC, 文字OD})
折射定律範例最終成果

結論

用這個檔案可以自由調整介質的折射率及入射角,可以讓學生從邊長之間的關係推論出折射率和角度的關係,在沒有辦法做實驗的狀況下,至少可以讓學生對折射定律比較有感覺。

相關指令的官方說明書

  1. 點                https://wiki.geogebra.org/en/Point_Command 
  2. 垂直線        https://wiki.geogebra.org/en/PerpendicularLine_Command 
  3. 線對稱        https://wiki.geogebra.org/en/Reflect_Command 
  4. 畫角度        https://wiki.geogebra.org/en/Angle_Command 
  5. 數值滑桿    https://wiki.geogebra.org/en/Slider_Command 
  6. 旋轉            https://wiki.geogebra.org/en/Rotate_Command
  7. 射線            https://wiki.geogebra.org/en/Ray_Command 
  8. 條件            https://wiki.geogebra.org/en/If_Command 

沒有留言:

張貼留言