對于小立方體組合的三視圖問題,之前介紹過兩種搞定小立方體組合的方法——
一是通過輸入的方式:
二是通過拖動的方式:
今天,來說說通過點擊的方式,也可以完成小立方體組合。
而且,該方式可用于這一類題目的演示——給出一個由若幹個小立方體疊成的幾何體的俯視圖,每個小方格中的數字表示該位置上重疊的小立方體的個數,要求畫出其三視圖。
來看看效果吧:
源文件獲取方式,請見文末
可以看到:點擊小格子,即可産生該位置上的小立方體;而且,點擊同一個小格子多少次,就在該位置上堆疊多少個小立方體。
另外,當點擊小格子生成相應的小立方體組合後,還可以隐藏沒有用到的小格子!
----------------二次編輯:新增一個功能----------------
修改後的作品效果
----------------二次編輯結束:作品修改請見鍊接----------------
效果不錯吧?有想到怎麼做嗎?
來看看制作思路:
下面開始動手操作!
一次性生成所有小格子
■ 隻需一條指令,即:
l1 = 扁平列表(序列(序列(多邊形((u, v), (u 1, v), 4), u, 0, 4), v, 0, 4))
思考過程如下:
· 小格子即為正方形,可用多邊形(Polygon)指令:
多邊形( <點1>, <點2>, <頂點數> )
· 小格子非常有規律,又是二維的,那麼,可以用序列嵌套。
· 為了方便後續用元素( <列表>, <元素位置> ),于是,再運用扁平列表(Flatten)。
■ 輸完l1後,先激活3D繪圖區,再輸入:
中心定位((3,2,2))
注:中心定位(CenterView)。
■ 最後,将l1隐藏。因為我們需要的是獨立的小格子。
構造獨立的小格子
■ 在表格區A1、A2處分别輸入1、2,并下拉填充至A25。
■ 在B1處,輸入=元素(l1, A1)。
如果此時下拉B1填充,即可産生相應的獨立的小格子。不過——我們需要先輸入B1的單擊時腳本,再下拉填充,以保證得到的所有小格子都有腳本!
問題來了——小格子的單擊時腳本應輸入什麼?
于是:
■ 構造n1,n2,……,n25用來計數,并且初始值都為-1(這個初始值與後續構造立方體的指令有關):
執行(序列("n" k "=-1",k,1,25))
■ 在B1的單擊時腳本輸入:
執行({"SetValue(n" Row(%0) ",n" Row(%0) " 1)"})
■ 下拉B1至B25填充。
具體操作如下:
這裡稍作說明:
執行(Execute)在批量操作上可省時省力,其基本用法請見:「執行」是什麼寶藏指令。
執行( <文本列表> )
對于不熟悉或者較長的執行指令,可先将列表書寫完整,再改寫為文本。
構造小立方體
有了用來計數的n1,n2,……,n25,以及小格子B1,B2,……,B25。那麼,小立方體如何根據這些對象構造出來呢?
先來看這條指令:c1 = 序列(正六面體(平移(B1, 向量((0, 0, v)))), v, 0, n1),應如何理解?
正六面體( <正方形> )
當n1取值為-1,0,1時,c1如下圖所示。
注:正六面體(Cube)、平移(Translate)、向量(Vector)。
類似地,相應的c2,c3,……,c25也可以如此構造。
■ 于是,此批量操作可以用執行指令,即:
執行(序列("c" u "=Sequence(Cube(Translate(B" u ",Vector((0,0,v)))),v,0,n" u ")",u,1,25))
■ 并設置所有小立方體的線徑、顔色。
令n1,n2等都為0,再設置c1,c2等的屬性
顯示小立方體數量
每個小格子上需顯示此處的小立方體數量。以小格子B1為例,其小立方體數量是n1 1。于是,其文本為:
文本(n1 1,形心(B1) (-0.12, -0.21))
注:文本(Text)、形心(Centroid)。
而其他24個文本也可以類似構造。
■ 于是,所有文本的構造如下:
執行(序列("Text(n" k " 1, Centroid(B" k ") (-0.12, -0.21))",k,1,25))
來看看效果:
■ 可以看到點擊小格子時,容易不小心就點到了文本;于是,為了避免這種情況,将所有文本設置為不允許選定。
創建複選框、按鈕
■ 創建複選框a,标題為$\Large隐藏無關格子$。
希望不勾選複選框時:所有小格子、文本都可以顯示出來;當勾選複選框,而且小格子上的小立方體數量不等于0時,顯示這些小格子、文本。
■ 于是,設置所有小格子、文本的顯示條件。即:
執行(序列("SetConditionToShowObject(B" k ",!a ||(a &&n" k "!=-1))",k,1,25))
執行(序列("SetConditionToShowObject(text" k ",!a ||(a &&n" k "!=-1))",k,1,25))
■ 創建按鈕:
注:設置視圖方向(SetViewDirection)。
要點回顧後記
受趙林老師、劉玉平老師的啟發,才有了本作品。
一開始,啊K隻想到全部用執行指令。至于每個小格子的單擊時腳本,本來是希望借助可以給對象添加腳本的指令,就可以再用執行來批量操作。
但是,GeoGebra中,隻能進入對象的屬性,方可添加腳本。不過,在表格區,當下拉填充時,還可複制其腳本。所以,利用表格區,就可極大地節省輸入腳本的時間。
所以,利用表格區、執行指令都可以批量操作。而表格區的下拉填充,還能填充對象的腳本等屬性。
如需本作品的源文件,請回複:哪裡需要立方體就點哪裡。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!