1. 對稱點的選擇[br]與之前不同,之後為了找到反射方向所做出的對稱點,會用略微不同的方式製作,以避免光線往拋物線外面射出。[br]2. 射線的設置[br]之前所做出的射線,會與拋物線有兩個交點,一個是原本的反射點,另一個是下一個反射點。這裡會用一個小小技巧,讓射線與拋物線只有一個交點(下一個反射點)。[br]3. 起始光線平行對稱軸或經過焦點[br]此時光線經過1~2次反射之後,就會往無限遠處射出,也就是說不會有下一個反射點了,也不會有用來模擬光線的向量。此時就要再用其他方式,將這樣的光線製造出來。
在指令列輸入指令:y = 0.25*x^2[br](此拋物線的焦點會位於(0,1) )
.確認一下拋物線的名稱是否為f,以下以拋物線名稱為f為例去操作[br](1) 在拋物線內製造一新點A(A點必須要在拋物線的[b]上方[/b])[br](2) 在[u]拋物線上[/u]製造一點B。[br](3) 製作向量AB,作為光線的示意。
.相較於切線,實際上更重要的是[b]法線[/b]。[br].[u]這裡就不再另外製造出切線,而是將切線放入雙重指令。[/u][br].製作法線:輸入指令[u]PerpendicularLine(B, Tangent(B, f) )[/u],得到直線g。
(1) 做點A對法線g的對稱點A',可用線對稱工具或者指令Reflect(A, g)。[br](2) 做出射線,輸入指令[u]Ray( 0.99*B+0.01*A' , A' )[/u],[u]並將其重新命名為[/u][u]r1[/u]。[br](3) 做出射線r1與拋物線f的交點,得到C點。[br](4) 製作向量BC,作為光線的示意。
(1) 製作法線:輸入指令PerpendicularLine(C, Tangent(C, f) ),得到直線h。[br](2) 利用前一個反射點,做點B對法線h的對稱點B',或者指令Reflect(B, h)。[br](3) 做出射線,輸入指令Ray( 0.99*C+0.01*B' , B' ),並將其重新命名為r2。[br](4) 做出射線r2與拋物線f的交點,得到D點。[br](5) 製作向量CD,作為光線的示意。
.當光線不是平行對稱軸或者經過焦點時,光線會在拋物線上反射無限次。[br].大多時候光線反射幾次後,就會跑到很遠的地方。所以只要做4~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) 隱藏不必要出現的法線、射線和對稱點。