S4E22 ItationList 与毕氏螺线
在这节要呈现的就是毕氏螺线,主要的结构就是伸缩+旋转。但对于这个重复类似的结构,本教程将介绍 iterationList 来实现动态增加的迭代点列。

问:毕氏螺线的结构是什么呢?
答:有很多直角三角形?最初是个等腰直角三角形 OPP1
因后续都是用旋转,在这先用旋转来画出 P2
旋转: Rotate(旋转对象,旋转角,旋转中心)
O = (0,0)
P = (1,0)
P1 = Rotate(O,-π/2, P)
问:如何画出第二个三角形 OP1P2 的 P2。
答:为了维持 ∠OP1P2 = 90°,这里也是对 O 作顺时针转 90° 来得到。
P2' = Rotate(O,-pi/2, P1)
问:但毕氏螺旋的短股长度为1,要如何调整呢?
答:可以先将 O 点内缩后再旋转。要内缩时,利用向量来调整长度。
1.将 O 内缩后的点为 P1 + vector(P1,O)/Segment(P1,O)
2.再将此点对 P1 旋转 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 就可快速产生多个点。
1.先建滑动条来控制迭代次数 n
2.利用 IterationList 这指令来完成,将原本的 P1 改为变数 a, 再指定 a 的初始值。
3.迭代序列的参数: IterationList( 迭代方法, 变数, {初始值}, 迭代次数)
n = 1
Ps = IterationList(Rotate(a+ Vector(a,O)/Segment(a,O),-pi/2,a),a,{P},n-1}

问:点列完成后如何连接边?
答:要利用序列来连边。
1. 斜边用 OPs、短股用 PPs
2. 要取得点列 Ps 中的第k个元素,可用 Ps(k)
3. 序列的参数:Sequence( 指令,变数, 开始值,结束值)
4. 线段 Segment(A,B) 为链接 A,B 两点
OPs=Sequence(Segment(Ps(k),O),k,1,n)
PPs=Sequence(Segment(Ps(k),Ps(k+1)),k,1,n-1)

问:如何表示长度?
答:通过Sequence 与 Text 指令,也可在每个边上标出对于的长度。
1.文字参数:Text(内容, 位置, 是否有变数, 是否有LaTeX代码)
2. $\sqrt{k}$ 为 LaTeX 的根式写法。
3. 文字放在点 Ps(k) 的右下方
Ts=Sequence(Text("$\sqrt{"+ (k)+ "}$", Ps(k),true,true),k,2,n)

通过以上四步骤就完成毕氏螺线。在这用两种list 一种为 iterationList 、另一种为 Sequence。你能说出这两个的差别与使用时机吗?
相关连接
【GGB】https://www.geogebra.org/classic/ky8ybmhp
【Bili 】https://www.bilibili.com/video/av59234333
【YouTube】https://youtu.be/UYS7ND7J0RE