最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

【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 正多邊形及正多邊形尖頂的設計思路的評論 (共 條)

分享到微博請遵守國家法律
昌宁县| 福安市| 贞丰县| 宜章县| 清徐县| 四平市| 伊通| 锦屏县| 三门峡市| 曲麻莱县| 柏乡县| 韩城市| 筠连县| 无棣县| 偏关县| 天水市| 博白县| 温州市| 汝城县| 班戈县| 利辛县| 芒康县| 策勒县| 佛山市| 天祝| 栖霞市| 南木林县| 东宁县| 佛冈县| 漾濞| 许昌市| 岗巴县| 分宜县| 丹棱县| 宝清县| 西平县| 三亚市| 舟曲县| 唐山市| 西丰县| 庐江县|