S8G8 螞蟻爬圓柱
先前完成了螞蟻爬長方體,關(guān)鍵在于長方體的展開。這次的任務(wù)要來挑戰(zhàn)螞蟻爬圓柱,關(guān)鍵也在如何對圓柱作展開。其實(shí)在于圓如何展開。利用 Geogebra 的曲面與曲線指令就可完成這酷炫的 3D 效果。?

先備概念
在這次的操作會利用到移動坐標(biāo)的概念,建議可先參考 S4E09 邊繞邊轉(zhuǎn)的圓的概念。

關(guān)于螞蟻?zhàn)唛L方體,可參考 S7G3?https://www.bilibili.com/video/BV1Qz4y1o7Vb
任務(wù)一:繞圓滾動

說明
要達(dá)到圓柱在空間中的展開,先從平面上圓的展開來看。要做到圓的展開的效果,主要利用將一個圓滾動,將圓周攤開成一直線的方法。在這節(jié)先建立滑動條 t, 在建立動圓的圓心 Ot,接著線端的部分利用 Curve(u*(2pi,0),u,0,1) 來達(dá)成。
雖然可用線段 Segment 來達(dá)到這個效果,但 Curve 的概念是這節(jié)的重點(diǎn),先繞大家認(rèn)識 Curve 的基本概念,通過一個參數(shù) u ,來控制曲線的軌跡。
操作
t= Slider(0,1,0.01,1,100)
Ot = (2pi t,0)
cOt = Circle(Ot,1)
l(u) = curve( u*(2pi,0),u,0,1)?
任務(wù)二:將圓展開

說明
這是本節(jié)最困難的一步。主要建立一個移動坐標(biāo)系,就是圖中 Ot,Xt, Yt 所構(gòu)成的坐標(biāo)。有了這個移動的坐標(biāo)系,就可利用這個坐標(biāo)搭配 cos ,sin 來繪制動圓。
首先是 Xt 的選定,這 Xt 會隨著 Ot 往前,同時作順時間繞轉(zhuǎn),?而一開始位在 Ot 的正下方,因此, Xt 的設(shè)置為?? Ot +? cos(t)*(0,-1)+ sin(t)*(-1,0)?。這就可到到繞 Ot 轉(zhuǎn)動的效果。接下來為了控制周期為 2pi 。就將 Xt 設(shè)為? Ot +? cos(2 pi t)*(0,-1)+ sin(2 pi t)*(-1,0) 。類似地,也可設(shè)定 Yt 的坐標(biāo)為 Yt = Ot + (-cos(2 pi t), sin(2 pi t))。
接著就利用 Ot, Xt, Yt, 建立兩軸的向量 vx, vy。因此,繞 Ot 轉(zhuǎn)動的攤開圓弧就可設(shè)定為 c(t) Curve( Ot+ cos(2pi u) * vx + sin(2pi u)?*vy, ?u, t, 1) 。但這個其實(shí)位置還不正確,要將 u 在代換為 (1-u) 才能讓曲線終點(diǎn)結(jié)束在 Xt 。
有了先前的線段 l(u) 與圓上的圓弧 c(u), 就可利用 If 來將這個兩個曲線串聯(lián)來一起。
操作
Xt = Ot + (-sin(2 pi t),-sin(2 pi t))
Yt = Ot + (-cos(2 pi t), sin(2 pi t))
vx = Vector( Ot, Xt)
vy = Vector(Ot, Yt)
c(u) = Curve( cos(2 pi (1-u)) vx +?sin(2 pi (1-u))*vy , u, t, 1)
c2(u) = curve( If(u<=t, l(u),?c(u)),u,0,1)
任務(wù)三:圓柱的展開

說明
有了圓的曲線展開,通過surface 指令,就可達(dá)到空間中的曲面效果。先設(shè)定圓柱高度 h,接著利用 Surface( c2(u) + v*(0,0,h), u,0,1, v,0,1) 就可一行生成個動態(tài)展開的曲面。
要留意的就是 曲線是一個參數(shù),但曲面是兩個參數(shù) u,v 。
操作
h = 3.14
s3 =Surface(? c2(u) + v*(0,0,h)? ?, u,0,1 ,v,0,1)
任務(wù)四?螞蟻爬圓柱

說明
這節(jié)主要利用先前的曲面 s3(u,v) 建立一個曲面上的曲線。通過 c3(u)?= Curve(?s3(u,u), u,0,1)?就可得到位在曲面上的曲線。
為了讓這個曲線長可以調(diào)控長度,再建立一個滑動條 s, 將參數(shù)改為?c3(u)?=?Curve(?s3(u,u), u,0,s)?,就可調(diào)整曲線長。
若要讓曲線多繞幾圈,因?yàn)榍娴牡讓蛹軜?gòu)是動圓,只要加速動圓上的轉(zhuǎn)速就可達(dá)到多次纏繞的效果。因此,設(shè)定滑動條 n,再將參數(shù)改為 c3 = Curve( s3(n*u,u) , u,0,s )。
操作
n = Slider(0,1,0.01,1,100)
s = slider(0,1,0.01,1,100)
c3 = Curve(? s3(n u,u) ?, u,0,s?)
小結(jié)
這節(jié)展示了 Geogebra 制作曲面的便利性,通過曲線參數(shù)式再加入第二個參數(shù)就可作出曲面,而對曲面的參數(shù)再作調(diào)整,就可限制為曲面上的曲線。
這節(jié)最有挑戰(zhàn)的是移動坐標(biāo)系的概念,這個在處理復(fù)合型的移動時相當(dāng)方便。主要就是解放原本坐標(biāo)系固定在 (0,0), (1,0), (0,1)?的思維。有了移動坐標(biāo)系就可作出更多動態(tài)的變化。
另外,也有 Geogebra 高手 九月的rain 利用切線的方式來處理圓柱的展開,這個方法也很不錯,鼓勵大家去參考比較?https://www.bilibili.com/video/BV1ei4y1s7pt?
參考鏈接
【GGB】https://www.geogebra.org/m/wufqzsgg?
【Bili】https://www.bilibili.com/video/BV1ky4y1J7Lg
【YouTube】https://www.youtube.com/playlist?list=PLXH05kw-i_5IOyxgGKHsek2beDFrcsPZ7