S4E22 ItationList 與畢氏螺線
在這節(jié)要呈現(xiàn)的就是畢氏螺線,主要的結(jié)構(gòu)就是伸縮+旋轉(zhuǎn)。但對于這個重復(fù)類似的結(jié)構(gòu),本教程將介紹 iterationList 來實(shí)現(xiàn)動態(tài)增加的迭代點(diǎn)列。

問:畢氏螺線的結(jié)構(gòu)是什么呢?
答:有很多直角三角形?最初是個等腰直角三角形 OPP1
因后續(xù)都是用旋轉(zhuǎn),在這先用旋轉(zhuǎn)來畫出 P2
旋轉(zhuǎn):?Rotate(旋轉(zhuǎn)對象,旋轉(zhuǎn)角,旋轉(zhuǎn)中心)
O = (0,0)
P = (1,0)
P1?=?Rotate(O,-π/2,?P)??
問:如何畫出第二個三角形 OP1P2 的 P2。
答:為了維持?∠OP1P2 = 90°,這里也是對 O 作順時針轉(zhuǎn) 90° 來得到。
P2'?=?Rotate(O,-pi/2,?P1)?
問:但畢氏螺旋的短股長度為1,要如何調(diào)整呢?
答:可以先將 O 點(diǎn)內(nèi)縮后再旋轉(zhuǎn)。要內(nèi)縮時,利用向量來調(diào)整長度。
1.將 O 內(nèi)縮后的點(diǎn)為 ?P1 +??vector(P1,O)/Segment(P1,O)
2.再將此點(diǎn)對 P1 旋轉(zhuǎn)?90°。?
P2?=?Rotate(P1?+?vector(P1,O)/Segment(P1,O),?-pi/2,P1)
??

問:那 P3 也是可以用這方法完成嗎?
答:也是可以用這方法,將 P1 改為 P2 即可。
P3?=?Rotate(P2?+?vector(P2,O)/Segment(P2,O),?-pi/2,P2)
問:那接著作 P4, P5 有什么更快的方式呢?
答:這個 P2 由 P1 生成,P3 由 P2 生成,適合用迭代的方式來完成。而這所用的指令就是?IterationList 。通過 iterationList 就可快速產(chǎn)生多個點(diǎn)。
1.先建滑動條來控制迭代次數(shù)?n?
2.利用 IterationList 這指令來完成,將原本的 P1 改為變數(shù) a, 再指定 a 的初始值。
3.迭代序列的參數(shù):?IterationList( 迭代方法,?變數(shù),?{初始值},?迭代次數(shù))
n = 1
Ps?=?IterationList(Rotate(a+?Vector(a,O)/Segment(a,O),-pi/2,a),a,{P},n-1}

問:點(diǎn)列完成后如何連接邊?
答:要利用序列來連邊。
1. 斜邊用 OPs、短股用 PPs
2. 要取得點(diǎn)列 Ps 中的第k個元素,可用 Ps(k)?
3. 序列的參數(shù):Sequence(?指令,變數(shù),?開始值,結(jié)束值)
4. 線段 Segment(A,B)? 為鏈接 A,B 兩點(diǎn)
OPs=Sequence(Segment(Ps(k),O),k,1,n)
PPs=Sequence(Segment(Ps(k),Ps(k+1)),k,1,n-1)

問:如何表示長度?
答:通過Sequence 與 Text 指令,也可在每個邊上標(biāo)出對于的長度。
1.文字參數(shù):Text(內(nèi)容, 位置, 是否有變數(shù), 是否有LaTeX代碼)
2. $\sqrt{k}$ 為 LaTeX 的根式寫法。
3. 文字放在點(diǎn) Ps(k) 的右下方
Ts=Sequence(Text("$\sqrt{"+ (k)+ "}$", ?Ps(k),true,true),k,2,n)

通過以上四步驟就完成畢氏螺線。在這用兩種list 一種為 iterationList 、另一種為 Sequence。你能說出這兩個的差別與使用時機(jī)嗎?
相關(guān)連接
【GGB】https://www.geogebra.org/classic/ky8ybmhp
【Bili 】https://www.bilibili.com/video/av59234333
【YouTube】https://youtu.be/UYS7ND7J0RE