03 (旋轉)拋物面上的光線反射(多次)

旋轉拋物面的多次反射示意圖
旋轉拋物面
我們在此處所要討論的是橢圓拋物面中的旋轉拋物面。[br][br]若用一個與對稱軸垂直的平面,切過旋轉拋物面,截痕即是一個圓;若用一個包含對稱軸的平面,切過旋轉拋物面,其截痕會是一群焦點、開口大小一樣的拋物線。也就是說,將一個拋物線,對其對稱軸旋轉,所圍得的圖形,即是旋轉拋物面。[br][br]其中一種形式的旋轉拋物面之方程式為:[i]z[/i]=[i]a[/i]([i]x[/i][sup]2[/sup]+[i]y[/i][sup]2[/sup])。[br]用此方程式表示的旋轉拋物面,其對稱軸為[i]z[/i]軸。[br]而這裡我們只先討論旋轉拋物面,是因為旋轉拋物面有固定的焦點。這表示所有平行對稱軸的入射光線,反射路徑都會經過焦點,也就是能將光線聚集在一點上。這也代表,不論是衛星訊號接收器或碟式聚光太陽能熱發電,都是用旋轉拋物面。
切平面與法線
在三維空間中,對旋轉拋物面上的一點而言,該點的"切線"會有無限多條,即使鎖定其中一條"切線",過該點且垂直該"切線"的直線亦有無限多條,這樣就不容易找到我們所需要的法線。[br][br]到了三維空間,你可能會想:[br]「我們只要找出拋物面在該點的"切平面",就可以找出過該點且垂直"切平面"的法線了。」[br]但是找出切平面這件事情,除了超出了高中職所學之外,Geogebra也沒有工具或指令能夠直接做出切平面,[br][br]當然還是有方法的,只要我們不依賴切線或切平面就找出法線。而讓我們先回到二維平面去看法線與拋物線的性質。[br][br][br]參考下圖,設拋物線方程式為[i]y[/i]=[i]ax[/i][sup]2[/sup],[br]A、B為拋物線上兩點,而各別通過A、B的兩條斜直線為A、B在拋物線上的法線。[br] [br]這裡會有一個很特別的情形,當我們去找出兩條法線與[i]y[/i]軸的交點A0、B0時,會發現一個相同點:[br]A、A0的[i]y[/i]座標之差,剛好等於B、B0的[i]y[/i]座標之差。不論A、B怎麼移動,都會有這樣子的特性。[br][br]更特別的,它們的差距,剛好等於[math]\frac{1}{2a}[/math]。這表示,我們能用一個方法來製造法線:[br][br]利用拋物線上一點P和P0所做出的直線,當作P在拋物線上的法線。[br]其中,P0=(0,[i]y[/i](P)+[math]\frac{1}{2a}[/math]), [i]y[/i](P)即是P點的[i]y[/i]座標。
法線與拋物線 [i]y[/i]=[i]ax[/i][sup]2[/sup] 之關係
類似地,這個方法也可以在旋轉拋物面上使用.只有一些地方不太一樣。[br]例如例子中,拋物線的方程式是[i]y[/i]=[i]ax[/i][sup]2[/sup] ,而這裡旋轉拋物面所使用的方程式為[i]z[/i]=[i]a(x[/i][sup]2[/sup]+[i]y[/i][sup]2[/sup]) ,在這之中,拋物線的對稱軸為y軸,而旋轉拋物線的對稱軸則是z軸。[br][br]所以修改後的法線製作方法如下:[br]利用拋物面上一點P和P0所做出的直線,當作P在拋物線上的法線。[br]其中,P0=(0,0,[i]z[/i](P)+[math]\frac{1}{2a}[/math]), [i]z[/i](P)即是P點的[i]z[/i]座標。[br]所以,製作法線的指令,可輸入 Line( P , ( 0 , 0 , [i]z[/i](P) + 1/(2[i]a[/i]) )[br][br]接著只要熟悉一下3D繪圖區的操作模式,就可以開始製作拋物面的光線反射了。
在此處製作 拋物線上的光線反射(多次)
步驟1 打開3D繪圖區,關閉主繪圖區。
在"檢視"之中操作
步驟2 製作光源起點A、拋物面以及最初的反射點B
(1) 先製造一個新點A,不要製造成在軸上的點。[br](2) 在指令列輸入指令:z = 0.05(x^2 + y^2)  (此拋物面的焦點會位於(0,0,5) )[br] .確認一下拋物面的名稱是否為f,以下以拋物面名稱為f為例去操作[br](3) 調整點A的位置(A點必須要在拋物面的[b]上方[/b])[br](4) 在拋物面上製造一點B。[br] .記得移動視角,確認A,B兩點的位置。[br](5) 製作向量AB,作為光線的示意。
步驟3 製作反射光線
.法線是用來幫我們找出對稱點,也就是光線的走向。這裡我們就不再製造出法線。[br](1) 做點A對「B的法線」之對稱點A',[br]輸入指令Reflect( A , Line( B , ( 0 , 0 , z(B) + 10 ) ) )。[br](2) 做出射線,輸入指令Ray( 0.99*B+0.01*A' , A' ),並將其重新命名為r1。[br](3) 做出射線r1與拋物線f的交點,得到C點。[br](4) 製作向量BC,作為光線的示意。
步驟4 製作下一個反射點
(1) 利用前一個反射點,做點B對「C的法線」的對稱點B',[br] 輸入指令Reflect( B , Line( C , ( 0 , 0 , z(C) + 10 ) ) )。[br](2) 做出射線,輸入指令Ray( 0.99*C+0.01*B' , B' ),並將其重新命名為r2。[br](3) 做出射線r2與拋物面f的交點,得到D點。[br](4) 製作向量CD,作為光線的示意。
步驟5 重複步驟4,直到做出足夠的反射點
.當光線不是平行對稱軸或者經過焦點時,光線會在拋物線上反射無限次。[br].大多時候光線反射幾次後,就會跑到很遠的地方。所以只要做4~6次的反射,就足以應付大多數的情況了。
步驟6 調整特殊情形的射線顯示,並隱藏不必要物件
(1) 當起始光源A到B之間會通過焦點時,光線反射一次後會遠離拋物線,所以要讓射線r1顯示。[br]將射線r1的[b]顯示條件[/b]設定為「 x(B) == x(A') 」,同時製造向量BA',讓射線r1看起來更有方向感,並使該向量的[b]顯示條件[/b]亦設為「 x(B) == x(A') 」。[br][br](2) 當起始光源A到B的方向平行對稱軸時,光線反射兩次後會遠離拋物線,所以要讓射線r2顯示。將射線r2的[b]顯示條件[/b]設定為「 x(C) == x(B') 」,同時製造向量CB',讓射線r2看起來更有方向感,並使該向量的[b]顯示條件[/b]亦設為「 x(C) == x(B') 」。[br][br](3) 隱藏不必要出現的法線、射線和對稱點。

Information: 03 (旋轉)拋物面上的光線反射(多次)