S4E14 圣誕樹
趁著圣誕夜,本周任務(wù)就是要來繪制如下的圣誕樹。

在這篇文案,主要想與老師分享些,以「自我提問」來解決問題的方法。
以這個(gè)圣誕樹為例,第一部自我提問,就是要提醒自己去分析這個(gè)圣誕樹的主要結(jié)構(gòu)可以拆解為哪些部分?
經(jīng)過這個(gè)提問,引導(dǎo)我注意到,可分為樹干、綠色的橫桿、藍(lán)色、紅色的外圍曲線。而本題的關(guān)鍵就在于這紅、藍(lán)曲線的繪制方式。關(guān)于要繪制紅藍(lán)曲線??稍偻ㄟ^些問題拆解得到細(xì)部的操作思路。
你將學(xué)會(huì)
通過自我提問來拆解問題
用空間中曲線 curve 來繪制螺線
知道 cone 指令的使用
學(xué)習(xí)內(nèi)容
1?單個(gè)螺線的制作
問:這紅、藍(lán)曲線的結(jié)構(gòu)是什么呢?
答:一層層往下擴(kuò)大的曲線。

問:那如果從上方看會(huì)是如何?
答:會(huì)是兩條由內(nèi)往外生長(zhǎng)的螺線。

問:那如何制作這漸漸變大的螺線呢?
答:螺線其實(shí)類似圓,有周期運(yùn)動(dòng)特性,可用 (cos(t),sin(t)) 來改變。但差別正在與半徑會(huì)漸漸擴(kuò)大。可考慮將, 長(zhǎng)度設(shè)為 t,這樣就會(huì)便繞圓周、邊變大。因此輸入指令 ?T1 = Curve(t cos(t), ?t sin(t), 0 ,t,0, 4pi)? ;
問:那如改變這曲線的形狀呢?
答:可增加滑動(dòng)條 a, b 考慮用 Curve(a*t cos(b*t), ?a*t sin(b*t), 0 ,t,0, 4pi) ;
問:那 a, b 的參數(shù)對(duì)圖形對(duì)影響為何呢?
答:a 控制半徑,也就是控制圖像大小。b ?控制 ??? ,答案見 ①

2?如何讓曲線向上延伸
問:那如何讓高度也不同呢?
答:用 (t*cos(t), ?t*sin(t), t ) 這樣就像個(gè)龍卷風(fēng)的樣子?

問:那如何倒過來呢?
答:可先建個(gè)滑動(dòng)條 Top 控制頂點(diǎn),并用參數(shù) c 來控制下降速度。并將z 坐標(biāo)的參數(shù)改為 T1=Curve(a*t cos(b*t), ?a*t*sin(b*t), ??? ,t,0,4pi) ? 答案見 ②。

3 如何制作雙螺線?
問:這兩條曲線有何關(guān)系呢?
答:對(duì) z 軸相對(duì)稱。

問:如何實(shí)現(xiàn)這 z 軸相對(duì)稱的表示法?
答:可用 x, y 坐標(biāo)都加負(fù)號(hào) :T2 = Curve(-a*t*cos(b*t), ?-a*t*sin(b*t), Top - c*t ,t,0,4pi) ?也可用曲線參數(shù)的平移,改變位置。也就是都加個(gè) pi 。T2 = Curve(a*t*cos(b*t + pi), ?a*t*sin(b*t + pi), Top - c*t ,t,0,4pi) ?
問:如何連接兩個(gè)曲線?
答:先取得兩個(gè)曲線上的點(diǎn)。也就是把曲線參數(shù),改為點(diǎn)坐標(biāo)。但要讓他成為動(dòng)點(diǎn),需要增加一個(gè)滑動(dòng)條 t。P1 = (a*t*cos(b*t), ?a*t*sin(b*t ), Top - c*t) ?P2 = ??? ? 答案見 ③。

問:如何呈現(xiàn)很多橫桿?
答:移動(dòng)時(shí),將軌跡保留下來。

4 影響樹干的結(jié)構(gòu)參數(shù)有什么?
問:影響樹干的結(jié)構(gòu)是什么?
答:樹干的結(jié)構(gòu)是個(gè)圓錐。

問:建一個(gè)圓錐需要什么參數(shù)?
答:需要一個(gè)圓與高。因此,要決定圓錐的頂點(diǎn)、底部位置還有底部圓的大小。
要建立【滑動(dòng)條】 Base=-8 來控制底部圓的位置。
可建 rBase = 5 控制底部圓的大小。
因此,底部的圓可建為 cBase = Circle(???,???,Vector((0,0,1)))。
答案見 ④。
可用 cone=(cBase, Top-Base ) 來建立圓錐。

當(dāng)完成上述任務(wù)后,你可再對(duì)半徑作一些不同的設(shè)定,來作出不同外觀的圣誕樹。
答案區(qū)
① 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