【Minecraft】worldedit|generate 角度+求余=生成網(wǎng)狀支撐結(jié)構(gòu)?
成品

求余很好理解,就是一個(gè)除數(shù)一個(gè)被除數(shù),求出余數(shù),比如5%3=2,如果放入到we中,可以用在判斷語句中,比如在表達(dá)式蒙版中,如果要做出相隔a距離(這里指的是空白區(qū)域)的且有b寬度的格柵的圖案就可以用 //re =x%(a+b)<b 1 來實(shí)現(xiàn),如圖

還要注意的是,做求余時(shí),被除數(shù)(如上圖的(-x))一定要是個(gè)正數(shù),因?yàn)樨?fù)數(shù)求余數(shù)永遠(yuǎn)小于一個(gè)正數(shù),會永遠(yuǎn)滿足表達(dá)式的條件,就起不到效果。因?yàn)楸磉_(dá)式蒙版里的坐標(biāo)是世界坐標(biāo),這里看小地圖,我的x坐標(biāo)是個(gè)負(fù)一千多的數(shù),比起換做(x+100000),加個(gè)負(fù)號會簡便些,當(dāng)然,在坐標(biāo)0附近就可以在坐標(biāo)或者原有的被除數(shù)上加一個(gè)很大的數(shù),確保它在求余時(shí)是正數(shù)
進(jìn)階一點(diǎn)甚至可以做出磚塊的圖案

好了,接下來進(jìn)入這次的generate主題,在之前的專欄中,已經(jīng)分析了關(guān)于atan2的用法,類似與極坐標(biāo)中的極角

我們用atan2(x,z)求出一點(diǎn)在x,z平面上的“極角”θ,范圍是-pi到pi,然后求余。當(dāng)然,在求余前我們還要對atan2(x,z)做些變換:
1、首先就是改成正數(shù)的范圍——atan2(x,z)+pi 范圍:0 ~?2pi
2、接著,為了方便控制,改成整數(shù)范圍——(atan2(x,z)+pi)/pi 范圍:0 ~ 2
3、為了有更多空間求余,擴(kuò)大范圍——((atan2(x,z)+pi)/pi)*40 范圍:0~80
這時(shí)改造的就差不多了,再配合 type= 和 三目運(yùn)算符(a?b:c) ,這在上述引用的專欄中有講到
我們先拿一個(gè)實(shí)心圓柱試試


//generate 35 type=( (((atan2(x,z)+pi)/pi)*40)%5<2 )?35:95 x^2+z^2<0.5^2
接下來就是做旋轉(zhuǎn)的工作了,兩個(gè)相反方向的條形相交叉就出現(xiàn)了網(wǎng)狀結(jié)構(gòu)
((atan2(x,z)+pi)/pi+(1+y))*40與((atan2(x,z)+pi)/pi+(1-y))*40
為了減少文本量,我們讓A=(atan2(x,z)+pi)/pi,這時(shí),本專欄的精華部分就出現(xiàn)了:
A=(atan2(x,z)+pi)/pi;type=((((A+(1+y))*40)%8<1)||(((A+(1-y))*40)%8<1))?35:95;

在后面配合一個(gè)y軸的旋轉(zhuǎn)體的表達(dá)式,就會有很不錯(cuò)的效果哦
當(dāng)然,如果不想交叉,只用一個(gè)方向的也是可以的

試一下其他形狀?
生成后替換下材質(zhì),效果是不是還可以

表達(dá)式里的都是知識點(diǎn),在前幾次的專欄都有介紹


雖然很好用,但不建議在做還原現(xiàn)實(shí)建筑時(shí)用,因?yàn)椴缓闷ヅ洌绻悴唤橐獾脑挕?/span>
就當(dāng)是一點(diǎn)小技巧,當(dāng)然是可以用在各種場景中,不一定是在現(xiàn)代建筑中
