国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網 會員登陸 & 注冊

【Minecraft】worldedit|generate 正多邊形及正多邊形尖頂的設計思路

2022-10-26 17:35 作者:MHols_  | 我要投稿

成品:八角尖頂

//generate 35 -h r=1-(y+1)^2/4;n=8;sqrt(x^2+z^2)/cos(pi/n)*cos(pi/n-((atan2(x,z)+pi)%(2*pi/n)))<r

做這種涉及正多邊形的形狀問題,我們首先要找到一個能畫出正多邊形的通式或辦法,目前我能想到的和找到的有兩種辦法:

1、一種是能夠畫出邊是絕對平直的正多邊形,這是在知乎上找到的

zhuanlan.zhihu.com/p/522197221

調節(jié)n的大小就會呈現n正多邊形

但如果直接帶入到MC中,會出現x負半軸不正確的問題,另一半正常,如圖


//generate 35 -h n=8;sqrt(x^2+z^2)<cos(pi/n)/cos(pi/n-(atan2(x,z)%(2*pi/n)))

這是因為atan2(x,z)的范圍是-pi~pi,因為后面有取余的操作,所以會出現錯誤,這里只需要把它+pi,讓它取值范圍變成0~2*pi,即把atan2(x,z)換成(atan2(x,z)+pi),重新帶入原式子,如圖

//generate 35 -h n=8;sqrt(x^2+z^2)<cos(pi/n)/cos(pi/n-((atan2(x,z)+pi)%(2*pi/n)))

2、另一種辦法就是之前講過的,用一個圓加上一圈的sin()(或cos()),細調兩者的系數,盡力達到所想要的效果

如果你是想要有圓角的效果,可直接用sin(),如圖

圖中使用的arctan(x/y)對應與mc中的是atan(x/z),但實際應用中最好使用atan2(x,z)

游戲中調節(jié)atan(x,z)前的系數可獲得對應的多邊形形狀,同時也要適當調節(jié)sin前的系數和圓原始半徑大小,如圖圓角三角形

//generate 35 -h x^2+z^2<(0.5+0.05*sin(3*atan2(x,z)))^2

題外話,如果把系數調得大一點呢?就會有放射狀花瓣的效果,依個人需求進行調節(jié)

如果你想要的是比較接近于正多邊形、不是圓角的效果,那就把sin()取絕對值,用圓去減去abs(sin()),如圖

我調的這個邊有點向內縮,到時候做尖頂的時候可能會有別樣的效果,甚至可以做傘了

如果繼續(xù)調大或調成負數呢?看圖吧

調到sin最大值剛好與半徑相等
負數,有點像月餅

可以自己試一試調一調,我是不可能展示完全的

最后調整下系數,得到我們想要的結果

看吧,和第一種做的差別也不是很大,所以我比較推薦這種方法,但還是要看具體情況

我們進入第二步,以八角為例,經過第一步我們可以得到

//generate 35 -h n=8;sqrt(x^2+z^2)<cos(pi/n)/cos(pi/n-((atan2(x,z)+pi)%(2*pi/n)))

不知道你發(fā)現沒有,我們還不能控制這個多邊形大小或者說半徑的大小,觀察以上的表達式,把左邊的sqrt(x^2+z^2)和右邊的那一大串放在一邊會怎么樣,讓右邊的除過去,留下一個1,這個1是不是就是我們想要的半徑r?

n=8;sqrt(x^2+z^2)/cos(pi/n)*cos(pi/n-((atan2(x,z)+pi)%(2*pi/n)))<r

我們暫且稱左邊的為 多邊形距離公式sqrt(x^2+z^2)/cos(pi/n)*cos(pi/n-((atan2(x,z)+pi)%(2*pi/n))),同理另一個做多邊形的方法也是

sqrt(x^2+z^2)/(0.5+0.05*sin(3*atan2(x,z)))<r

這步我們要解決的問題就是怎么讓它從下到上收縮為一點,我們只需要控制r的大小即可,讓它與y相關,如下圖的函數曲線,x作為r,y作為y


//generate 35 -h r=1-(y+1)^2/4;n=8;sqrt(x^2+z^2)/cos(pi/n)*cos(pi/n-((atan2(x,z)+pi)%(2*pi/n)))<r

我們再試下上述的另一種做多邊形的方法


收縮的函數

//generate 35 -h r=sqrt((1-y)/2);sqrt(x^2+z^2)/(0.8+0.05*abs(sin(10*atan2(x,z))))<r

也不知道像啥,裙子?

再試試有棱的

//generate 35 -h r=1-(y+1)^2/4;sqrt(x^2+z^2)/(0.8-0.1*abs(sin(5*atan2(x,z))))<r

以此為底,如果再旋轉一下?

有點冰淇凌的感覺//generate 35 -h rotate(x,z,(1+y));r=1-(y+1)^2/4;sqrt(x^2+z^2)/(0.8-0.1*abs(sin(5*atan2(x,z))))<r

最關鍵的是這個距離公式

n=8;sqrt(x^2+z^2)/cos(pi/n)*cos(pi/n-((atan2(x,z)+pi)%(2*pi/n)))

有什么問題或還想看什么效果可以留言

于23.8.10重制

【Minecraft】worldedit|generate 正多邊形及正多邊形尖頂的設計思路的評論 (共 條)

分享到微博請遵守國家法律
湘潭市| 手游| 武鸣县| 万州区| 延吉市| 鄂尔多斯市| 峨山| 长沙县| 华安县| 丹江口市| 德化县| 故城县| 赤峰市| 庄河市| 克山县| 汉中市| 许昌县| 海阳市| 顺昌县| 嘉禾县| 汕尾市| 同心县| 武义县| 恩施市| 和平县| 景德镇市| 宜都市| 谷城县| 黄陵县| 芜湖市| 福泉市| 定兴县| 景洪市| 陈巴尔虎旗| 抚宁县| 宁明县| 陇西县| 义马市| 安图县| 印江| 竹山县|