欢迎光临散文网 会员登陆 & 注册

S4E22 ItationList 与毕氏螺线

2022-02-27 09:57 作者:学用数学  | 我要投稿

在这节要呈现的就是毕氏螺线,主要的结构就是伸缩+旋转。但对于这个重复类似的结构,本教程将介绍 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。你能说出这两个的差别与使用时机吗?

相关连接

GGBhttps://www.geogebra.org/classic/ky8ybmhp

【Bili 】https://www.bilibili.com/video/av59234333

【YouTube】https://youtu.be/UYS7ND7J0RE



S4E22 ItationList 与毕氏螺线的评论 (共 条)

分享到微博请遵守国家法律