先來看看效果:
想知道怎麼做出以上效果嗎?想自己動手做一做嗎?
思路與指令
這個推導過程可分三步走:
于是:
似懂非懂?那就接着看吧!
圓周彈開
可以直接在之前的“圓周彈開”源文件上進行制作。
五條指令搞定的“圓周彈開”
其實就是輸入這五條指令:
A = (0, 0)
r = 1
α = 滑動條(45.0001°, 89.9999°)
B = A (0, r tan(α))
c = 圓弧(B, A, 旋轉(A, 2π r / 距離(B, A), B))
詳細解釋,請見《砰!圓周彈開》。
注:滑動條(Slider)、圓弧(CircularArc)、旋轉(Rotate)、距離(Distance)。
構造扇形
先對圓弧c進行n等分,其中,n必須是偶數(使得最終在上面、下面的扇形個數一樣)。那麼,讓滑動條n的增量為2即可:
n = 滑動條(4, 40, 2)
由此,就可以構造出來n等分點(包括兩端點):
l1 = 序列(描點(c, k), k, 0, 1, 1 / n)
注:序列指令等的解讀。
那麼,扇形如何構造呢?
由上圖,發現這些扇形的圓心好像都在一段圓弧上!由此入手——這些扇形的半徑、弧長相等,所以,這些扇形的圓心必定在一段圓弧上,假設在圓弧c'上。那麼:
于是可将c'構造出來:
c' = 位似(c, 1 - 1 / tan(α), B)
圓扇形( <圓心>, <點1>, <點2> )
那麼扇形對應的圓心呢?
扇形的點1、點2是圓弧c的n等分點,而對應的圓心應是圓弧c'的2n等分點。
于是,可以将圓弧c'的所有2n等分點構造出來,需要用到哪個點再拿出來用:
l2 = 序列(描點(c', k), k, 0, 1, 1 / (2n))
l3 = 序列(圓扇形(l2(2k), l1(k), l1(k 1)), k, 1, n / 2)
l4 = 序列(圓扇形(l2(2k), l1(k), l1(k 1)), k, n / 2 1, n)
備注:l2(2k)表示列表l2的第2k個元素,相當于元素(l2, 2k)。
上面是第一種方法,也可以用第二種方法——需要哪些點,就隻構造哪些點:
l2 = 序列(描點(c', k), k, 1 / (2n), 1, 1 / n)
l3 = 序列(圓扇形(l2(k), l1(k), l1(k 1)), k, 1, n / 2)
l4 = 序列(圓扇形(l2(k), l1(k), l1(k 1)), k, n / 2 1, n)
注:序列(Sequence)、描點(Point)、位似(Dilate)、圓扇形(CircularSector)。
旋轉扇形
旋轉中心就是最右邊的藍色扇形的右邊的半徑的中點,所以:
若用第一種方法,則:
C = 中點(l2(n), l1(n / 2 1))
若用第二種方法,則:
C = 中點(l1(n), l2(1))
于是旋轉效果也可以做出來了:
t = 滑動條(-1, 1, 0.001)
t' = 如果(t < 0, 0, t)
l4' = 旋轉(l4, t' * 180°, C)
其中,t'取值範圍是由0到1,使旋轉得以動态化。不過,為什麼要寫得這麼麻煩呢?這是為了讓t < 0的時候,可以控制α的變化,使得隻需拉動滑動條t就可以演示動畫。于是,還需更改下α的定義,即:
α = 如果(t == -1, 45.0001°, t ≥ 0, 89.9999°, 45° (t 2))
注:中點(Midpoint)、如果(If)。
文本與美化
最後,為了效果更佳,可以設置一下滑動條的标題,并作幾個文本。
指令 |
顯示條件 |
設置标題(n, "$\huge %v份$") | |
設置标題(t, "$\huge 切割、拼接$") | |
m = 滑動條(0, 2, 1) |
t == 1 |
設置标題(m, "$\huge 提示$") | |
text1 = "r" |
m > 0 |
text2 = " πr" |
m > 0 |
text3 = "S= πr^2" |
m == 2 |
text4 = "\bgcolor{#FFC0CB}{\ 圓的面積\ }" |
為了在未完成拼接時,都不顯示提示滑動條——在滑動條t的更新時腳本寫上:
如果(t<1,賦值(m,0))
注:賦值(SetValue)、設置标題(SetCaption)。
結語
至此,整個制作就完成了!
感興趣的老師,可以試一試如何完成這種更對應課本的效果:
如需源文件,請轉發本文,并寫上:
很可以!圓面積公式推導
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!