資料串列切割為子串列

本文的討論是延續自Grasshopper論壇這個主題:Change a point list order from 0-1-2-3-4-5 to 0-1,2-3,4-5

原發問者的問題是希望將一條龍式的資料串列,切割為長度為2的串列群,我的建議是利用 Path Mapper 重新配置資料串列的路徑,這屬於資料結構裡的串列結構,對初學者可能有難度,但一旦學會了用 Path Mapping,功力肯定大增!


資料路徑中大括號 { } 表示資料串列在樹狀結構中的位址,如 {0; 0} 表示位址為 0->0。後方的括弧 ( ) 為資料串列內容,以一維陣列形式表示,所以 {0; 0}(2) 為第一個串列的第三筆資料(以0為基底)。Path Mapping 好用就在於他可以加上運算和函數。上例中 floor(i/2) 為 i/2 後取整數(無條件捨去),i%2 為餘數除法。列舉說明如下:

{0; 0}(0) => {0; floor(0/2)}(0%2) 得 {0; 0}(0)
{0; 0}(1) => {0; floor(1/2)}(1%2) 得 {0; 0}(1)
{0; 0}(2) => {0; floor(2/2)}(2%2) 得 {0; 1}(0)
{0; 0}(3) => {0; floor(3/2)}(3%2) 得 {0; 1}(1)
依此類推。

原作者沒講清楚,他其實要問的是 0-1-2-3-4-5 如何變成 0-1, 1-2, 2-3, 3-4,...,而非 0-1, 2-3, 4-5,...。如此一來就要用到兩次 Path Mapper 或其他技巧,各位看倌可以試試看~

留言