球面像差

作者:王一哲
日期:2018/2/13

用球面作成的凹面鏡無法將平行主軸的入射光集中在同一個點,如果想要讓球面鏡有接近抛物面鏡的效果,入射光必須靠近主軸,球面的曲率半徑要夠大。本次課程檔案已上傳至 GeoGebraTube,可以線上操作或下載檔案

  1. https://ggbm.at/TEJPHsya
  2. 抛物線 https://ggbm.at/d2khJ7t2
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
球面像差最終成果

球面像差繪圖步驟

  1. 新增控制入射光數量 n、半徑 r、入射光範圍 range 的數值滑桿,指令為

    ​​​​n = Slider(1, 11, 1)
    ​​​​r = Slider(5, 15, 1)
    ​​​​range = Slider(0, r-1, 0.1)
    

    為了不讓入射光照到球面鏡的邊緣,因此 range 的最大值設為 r-1。手動調整數值 n = 5、r = 10、range = 5。

  2. 在 x 軸上新增原心點 C,利用 Segment 指令,以點 C 為起點向右畫出長度為 r 的線段,線段的右端會自動新增一個點,將它重新命名為 A,再用 Rotate 指令畫出點 C 上、下距離皆為 r 的點 A1、A2,再畫出通過 A1、A2 的圓弧 c。指令為

    ​​​​C = Point(xAxis)
    ​​​​i = Segment(C, r)
    ​​​​A_1 = Rotate(A, 90°, C)
    ​​​​A_2 = Rotate(A, -90°, C)
    ​​​​c = Semicircle(A_1, A_2)
    
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
球面像差步驟 1 ~ 2 成果

  1. 在 x 軸上畫出直線 f 作為主軸,新增點 B,在點 B 上、下 ± range 的範圍內畫 n 個點 points ,由這 n 個點畫出平行主軸的直線 lines ,找出直線與圓弧的交點 inters。指令為
    ​​​​f = Line(A, C)
    ​​​​B = Point(xAxis)
    ​​​​points = Sequence((x(B), i), i, -range, range, 2*range / (n - 1))
    ​​​​lines = Sequence(Line(points(i), f), i, 1, n)
    ​​​​inters = Sequence(Intersect(c, lines(i)), i, 1, n)
    
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
球面像差步驟 3 成果

  1. 畫出圓弧上的點 inters 各自的切線 tangents 與法線 nomrs。如果想要偷懶一點就只畫圓心和圓弧上各點的連線,這些連線就會是法線,這是圓的特性。
    ​​​​tangents = Sequence(Tangent(inters(i), c), i, 1, n)
    ​​​​nomrs = Sequence(PerpendicularLine(inters(i), tangents(i)), i, 1, n)
    
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
球面像差步驟 4 成果

  1. 用 inters 及 points 畫出射線 incidents 作為入射光,再用線對稱畫出 points 反射後的點 points’,再用 inters 及 points' 畫出射線 reflects 作為反射光。
    ​​​​incidents = Sequence(Ray(inters(i), points(i)), i, 1, n)
    ​​​​points' = Sequence(Reflect(points(i), norms(i)), i, 1, n)
    ​​​​reflects = Sequence(Ray(inters(i), points'(i)), i, 1, n)
    
    這裡我們不直接畫 incidents 的線對稱,因為畫出來會像下方的第二張圖,線對稱的結果會變成直線,不符合我們的需求。
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
球面像差步驟 5 成果

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
球面像差步驟 5 對入射光直接畫線對稱的結果

  1. 調整不同的入射光範圍 range,當 r = 10、range = 6.4 時,反射光很明顯地沒有集中在一個點上;當 r = 10、range = 3 時,反射光幾乎集中在 x = 5 處,可以看出焦距 f 約等於 r/2。
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
球面像差 r = 10、range = 6.4 的圖形

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
球面像差 r = 10、range = 3 的圖形

抛物線反射繪圖步驟

  1. 請參考前一篇文章〈二次曲線光學性質〉抛物線繪圖步驟1、2畫出如下圖的抛物線。
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
抛物線反射步驟 1 成果

  1. 新增控制入射光數量 n、入射光範圍 range 的數值滑桿,指令為

    ​​​​n = Slider(1, 11, 1)
    ​​​​range = Slider(1, 10, 0.1)
    

    手動調整數值為 n = 5、range = 10。

  2. 在 x 軸上畫出直線 f 作為主軸,新增點 B,在點 B 上、下 ± range 的範圍內畫 n 個點 points ,由這 n 個點畫出平行主軸的直線 lines ,找出直線與抛物線 d 的交點 inters。指令為

    ​​​​f = Line(A, C)
    ​​​​B = Point(xAxis)
    ​​​​points = Sequence((x(B), i), i, -range, range, 2*range / (n - 1))
    ​​​​lines = Sequence(Line(points(i), f), i, 1, n)
    ​​​​inters = Sequence(Intersect(d, lines(i)), i, 1, n)
    
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
抛物線反射步驟 2 ~ 3 成果

  1. 畫出圓弧上的點 inters 各自的切線 tangents 與法線 nomrs。
    ​​​​tangents = Sequence(Tangent(inters(i), d), i, 1, n)
    ​​​​nomrs = Sequence(PerpendicularLine(inters(i), tangents(i)), i, 1, n)
    
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
抛物線反射步驟 4 成果

  1. 用 inters 及 points 畫出射線 incidents 作為入射光,再用線對稱畫出 points 反射後的點 points’,再用 inters 及 points' 畫出射線 reflects 作為反射光。
    ​​​​incidents = Sequence(Ray(inters(i), points(i)), i, 1, n)
    ​​​​points' = Sequence(Reflect(points(i), norms(i)), i, 1, n)
    ​​​​reflects = Sequence(Ray(inters(i), points'(i)), i, 1, n)
    
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
抛物線反射步驟 5 成果

  1. 調整不同的入射光範圍 range,可以看到不管入射光範圍有多大,反射光依然會經過焦點。
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
抛物線反射 range = 3 的圖形

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
抛物線反射 range = 10 的圖形

相關指令的官方說明書

  1. 數值滑桿 https://wiki.geogebra.org/en/Slider_Command
  2. https://wiki.geogebra.org/en/Point_Command
  3. 線段 https://wiki.geogebra.org/en/Segment_Command
  4. 半圓 https://wiki.geogebra.org/en/Semicircle_Command
  5. 直線 https://wiki.geogebra.org/en/Line_Command
  6. 串列 https://wiki.geogebra.org/en/Sequence_Command
  7. 切線 https://wiki.geogebra.org/en/Tangent_Command
  8. 垂直線 https://wiki.geogebra.org/en/PerpendicularLine_Command
  9. 射線 https://wiki.geogebra.org/en/Ray_Command
  10. 線對稱 https://wiki.geogebra.org/en/Reflect_Command
  11. 抛物線 https://wiki.geogebra.org/en/Parabola_Command


tags:GeoGebra