2020年9月13日 星期日

拋物面鏡反射

作者:王一哲
日期:2020/9/13
這是為了展示拋物面鏡反射的性質而製作的檔案,可以由左上角的數值滑桿調整入射光與主軸的夾角 θ、入射光照射範圍 R、光線數量 N。本次課程檔案已上傳至 GeoGebraTube,可以線上操作或下載檔案。
拋物面鏡凹面反射

拋物面鏡凸面反射

凹面鏡繪圖步驟

  1. 新增數值拉桿定義入射光與主軸的夾角 θ、入射光照射範圍 R、光線數量 N。
    θ = Slider(0°, 30°, 1°)
    R = Slider(1, 10, 1)
    N = Slider(2, 10, 1)
  2. 計算光線之間的距離 d。
    d = R / (N - 1)
  3. 使用點工具於 x 軸上新增焦點 O 與準線通過的點 P。
  4. 畫出通過點 O、P 的直線 f 作為主軸,再畫出通過點 P 且與主軸垂直的準線 g,可以使用上方的工具列或是輸入以下的指令繪圖。
    f = Line(O, P)
    g = PerpendicularLine(P, f)
  5. 畫出以點 O 作為焦點、以直線 g 作為準線的拋物線 c,可以使用上方的工具列或是輸入以下的指令繪圖。
    c = Parabola(O, g)
  6. 拋物面鏡凹面反射繪圖步驟1 - 5

  7. 新增入射光通過的點初位置 points。
    points = Sequence(Point({-20, (-R) / 2 + d (i - 1)}), i, 1, N)
  8. 新增平行主軸的入射光 lines。
    lines = Sequence(Line(Element(points, i), f), i, 1, N)
  9. 新增平行主軸入射光與拋物線的交點 inters。
    inters = Sequence(Intersect(c, Element(lines, i)), i, 1, N)
  10. 拋物面鏡凹面反射繪圖步驟6 - 8

  11. 旋轉入射光通過的點,調整入射光與主軸的夾角,旋轉後的點命名為 incpoints。
    incpoints = Sequence(Rotate(Element(points, i), -θ, Element(inters, i)), i, 1, N)
  12. 畫出入射光 inclines。
    inclines = Sequence(Ray(Element(inters, i), Element(incpoints, i)), i, 1, N)
  13. 拋物面鏡凹面反射繪圖步驟9 - 10

  14. 於入射光與拋物線的交點畫出切線 tangents 及法線 norms。
    tangents = Sequence(Tangent(Element(inters, i), c), i, 1, N)
    norms = Sequence(PerpendicularLine(Element(inters, i), Element(tangents, i)), i, 1, N)
  15. 拋物面鏡凹面反射繪圖步驟11

  16. 畫出反射光 reflines。
    reflines = Sequence(Reflect(Element(inclines, i), Element(norms, i)), i, 1, N)
  17. 拋物面鏡凹面反射

凸面鏡繪圖步驟

  1. 將前一個檔案另存新檔,將點 P 用拖曳到拋物線 c 的左側,再隱藏點 P 及準線。
  2. 拋物面鏡凸面反射繪圖步驟1

  3. 新增反射光的延長線 reflines2。
    reflines2 = Sequence(Line(Element(inters, i), Element(reflines, i)), i, 1, N)
  4. 拋物面鏡凸面反射

相關指令的官方說明書

  1. 數值滑桿 https://wiki.geogebra.org/en/Slider_Command
  2. 直線 https://wiki.geogebra.org/en/Line_Command
  3. 垂直線 https://wiki.geogebra.org/en/PerpendicularLine_Command
  4. 拋物線 https://wiki.geogebra.org/en/Parabola_Command
  5. 序列 https://wiki.geogebra.org/en/Sequence_Command
  6. https://wiki.geogebra.org/en/Point
  7. 元素 https://wiki.geogebra.org/en/Element_Command
  8. 交點 https://wiki.geogebra.org/en/Intersect_Command
  9. 旋轉 https://wiki.geogebra.org/en/Rotate_Command
  10. 射線 https://wiki.geogebra.org/en/Ray_Command
  11. 切線 https://wiki.geogebra.org/en/Tangent_Command
  12. 線對稱 https://wiki.geogebra.org/en/Reflect_Command


HackMD 版本連結:https://hackmd.io/@yizhewang/HyQWDXoVv

沒有留言:

張貼留言