04 拋物線上的光線反射(試算表製作)

拋物線的三次反射示意圖
重複而枯燥的步驟,就交由電腦來處理吧
網路上有人戲稱「ctrl+c、ctrl+v」是電腦使用上偉大的發明之一,畢竟它減輕了許多枯燥且重複的工作。[br][br]而我們在前幾個作品中,為了呈現更多次的反射,就會不斷地重複同一步驟,讓可以模擬的反射次數更多。[br]雖然每次重複時,細節上有些微的不同,但幾乎都是重複的動作。這些重複的工作,就可以試著用電腦和程式的優勢,來減輕操作的次數。[br][br]要將這些多次重複的步驟利用電腦簡化,我目前有試過三個方法,其中一個是我最一開始使用的方法:[br].在物件屬性-程式中的OnUpdate,製造一個類似程式常用的For迴圈(While迴圈),來重複這些步驟。[br] 不過這招所需要的前置作業和操作較為複雜,也不是那麼好用,有興趣的人可以去看我之前的圓錐曲線反射作品。[br][br]後來向藍邦偉老師和官長壽老師學習後,又多了兩個方法:[br].利用迭代指令IterationList製作[br].利用試算表製作[br][br]在此處,我們會使用比較好理解的試算表製作方式
在此處製作 拋物線上的光線反射(多次)
步驟1 製作拋物線與打開試算表
(1) 在指令列輸入指令:y = 0.25*x^2 (此拋物線的焦點會位於(0,1) )[br](2) 在"檢視"之中,打開試算表視窗
步驟2 製作光源起點A,以及最初的反射點B
.確認一下拋物線的名稱是否為f,以下以拋物線名稱為f為例去操作[br](1) 在拋物線內製造一新點A(A點必須要在拋物線的[b]上方[/b])[br](2) 在[u]拋物線上[/u]製造一點B。[br](3) 製作向量AB,作為光線的示意。
步驟3 製作拋物線在B點上的法線
.相較於切線,實際上更重要的是[b]法線[/b]。[br].[u]這裡就不再另外製造出切線,而是將切線放入雙重指令。[/u][br].製作法線:輸入指令[u]PerpendicularLine(B, Tangent(B, f) )[/u],得到直線g。
步驟4 製作反射光線
(1) 做點A對法線g的對稱點A',可用線對稱工具或者指令Reflect(A, g)。[br](2) 做出射線,輸入指令[u]Ray( 0.99*B+0.01*A' , A' )[/u]。[br](3) 做出射線與拋物線f的交點,得到C點。
步驟5 將物件放入試算表
(1) 將點更名:A→A1、 B→A2、 C→A3、 。[br](2) 將過點A2(原本的點B)的法線,更名為B2 。[br](3) 將點A1(原本的點A)的反射點A',更名為C2 。[br](4) 將射線更名為D2 。[br](5) 將向量A1A2(原本的向量AB)更名為E2。
更名之後,物件就會被放到試算表之中
步驟6 利用試算表特性,複製指令
參考下圖操作[br](1) 在試算表上框起B2:E2,並將其複製到B3:E3 。[br](2) 接著在試算表上框起A3:E3,複製到A4:E10 。[br]如此,便能快速增加8次的反射模擬。
將B2、C2、D2、E2複製到B3、C3、D3、E3
將A3、B3、C3、D3、E3複製到A4、B4、......、D10、E10
步驟7 隱藏不必要物件
隱藏不必要出現的法線、對稱點和射線。[br][br]而試算表之中的B,C,D欄,即是製作過程中,所製造出來的法線、對稱點和射線。[br]利用試算表的特性,將B,C,D欄全部框起來之後,將其物件隱藏。[br][br]PS:利用試算表製造的物件,會被視為「輔助物件」,預設上不會在代數區上顯示。[br]要更改這些物件的屬性等等,可以直接對著儲存格案右鍵,就可以調整了。
將B,C,D欄的物件隱藏
步驟8 調整特殊情形的射線顯示
(1) 當起始光源A1到B1(原本的A到B)之間會通過焦點時,光線反射一次後會遠離拋物線,所以要讓射線D2顯示。[br]將射線D2的[b]顯示條件[/b]設定為「 x(A2) == x(C2) 」,同時製造向量A2C2,讓射線D2看起來更有方向感,並使該向量的[b]顯示條件[/b]亦設為「 x(A2) == x(C2) 」。[br][br](2) 當起始光源A1到B1(原本的A到B)的方向平行對稱軸時,光線反射兩次後會遠離拋物線,所以要讓射線D3顯示。將射線D3的[b]顯示條件[/b]設定為「 x(A3) == x(C3) 」,同時製造向量A3C3,讓射線D3看起來更有方向感,並使該向量的[b]顯示條件[/b]亦設為「 x(A3) == x(C3) 」。

Information: 04 拋物線上的光線反射(試算表製作)