S4E14 圣诞树
趁着圣诞夜,本周任务就是要来绘制如下的圣诞树。

在这篇文案,主要想与老师分享些,以「自我提问」来解决问题的方法。
以这个圣诞树为例,第一部自我提问,就是要提醒自己去分析这个圣诞树的主要结构可以拆解为哪些部分?
经过这个提问,引导我注意到,可分为树干、绿色的横杆、蓝色、红色的外围曲线。而本题的关键就在于这红、蓝曲线的绘制方式。关于要绘制红蓝曲线。可再通过些问题拆解得到细部的操作思路。
你将学会
通过自我提问来拆解问题
用空间中曲线 curve 来绘制螺线
知道 cone 指令的使用
学习内容
1 单个螺线的制作
问:这红、蓝曲线的结构是什么呢?
答:一层层往下扩大的曲线。

问:那如果从上方看会是如何?
答:会是两条由内往外生长的螺线。

问:那如何制作这渐渐变大的螺线呢?
答:螺线其实类似圆,有周期运动特性,可用 (cos(t),sin(t)) 来改变。但差别正在与半径会渐渐扩大。可考虑将, 长度设为 t,这样就会便绕圆周、边变大。因此输入指令 T1 = Curve(t cos(t), t sin(t), 0 ,t,0, 4pi) ;
问:那如改变这曲线的形状呢?
答:可增加滑动条 a, b 考虑用 Curve(a*t cos(b*t), a*t sin(b*t), 0 ,t,0, 4pi) ;
问:那 a, b 的参数对图形对影响为何呢?
答:a 控制半径,也就是控制图像大小。b 控制 ??? ,答案见 ①

2 如何让曲线向上延伸
问:那如何让高度也不同呢?
答:用 (t*cos(t), t*sin(t), t ) 这样就像个龙卷风的样子?

问:那如何倒过来呢?
答:可先建个滑动条 Top 控制顶点,并用参数 c 来控制下降速度。并将z 坐标的参数改为 T1=Curve(a*t cos(b*t), a*t*sin(b*t), ??? ,t,0,4pi) 答案见 ②。

3 如何制作双螺线?
问:这两条曲线有何关系呢?
答:对 z 轴相对称。

问:如何实现这 z 轴相对称的表示法?
答:可用 x, y 坐标都加负号 :T2 = Curve(-a*t*cos(b*t), -a*t*sin(b*t), Top - c*t ,t,0,4pi) 也可用曲线参数的平移,改变位置。也就是都加个 pi 。T2 = Curve(a*t*cos(b*t + pi), a*t*sin(b*t + pi), Top - c*t ,t,0,4pi)
问:如何连接两个曲线?
答:先取得两个曲线上的点。也就是把曲线参数,改为点坐标。但要让他成为动点,需要增加一个滑动条 t。P1 = (a*t*cos(b*t), a*t*sin(b*t ), Top - c*t) P2 = ??? 答案见 ③。

问:如何呈现很多横杆?
答:移动时,将轨迹保留下来。

4 影响树干的结构参数有什么?
问:影响树干的结构是什么?
答:树干的结构是个圆锥。

问:建一个圆锥需要什么参数?
答:需要一个圆与高。因此,要决定圆锥的顶点、底部位置还有底部圆的大小。
要建立【滑动条】 Base=-8 来控制底部圆的位置。
可建 rBase = 5 控制底部圆的大小。
因此,底部的圆可建为 cBase = Circle(???,???,Vector((0,0,1)))。
答案见 ④。
可用 cone=(cBase, Top-Base ) 来建立圆锥。

当完成上述任务后,你可再对半径作一些不同的设定,来作出不同外观的圣诞树。
答案区
① b 控制周期,影响疏密程度。
② T1=Curve(a*t cos(b*t), a*t*sin(b*t), Top - c*t ,t,0,4pi)
③ P2 = (a*t*cos(b*t + pi), a*t*sin(b*t + pi ), Top - c*t)
④ cBase = Circle( cBase, rBase,Vector((0,0,1)))
参考资料
【GGB】https://www.geogebra.org/classic/fkbr95cn
【Bili 】https://www.bilibili.com/video/BV12J411x7J2