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

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

利用Godot演示球體生成的4種不同的方法

2023-08-06 22:14 作者:輕狂的東邪君  | 我要投稿


項(xiàng)目地址:?https://gitee.com/stanleylam19/godot-generate-sphere

許可證:?WTFPL ("你他媽的想干嘛就干嘛")

視頻演示:?Godot寫(xiě)的4種生成球體的方法演示


演示操作可以參考上面視頻,本文的作用主要是解釋程序上這4種方法理論上的生成過(guò)程

1. Polar Sphere (基于極坐標(biāo)生成的球體)

三維球體的極坐標(biāo)

根據(jù)上述公式中的θ和φ這兩個(gè)角度的變化來(lái)得到球體的點(diǎn)

演示程序中得到球體是把θ和φ分成 100 等分后渲染的結(jié)果

可修改程序中 PolorSphere.gd 的 X_SEGMENTS 和 Y_SEGMENTS 變量來(lái)調(diào)整θ和φ的分割數(shù)量以觀察不同的球體渲染結(jié)果


2. Cube Sphere?(基于正方體生成的球體)


正方體

這種生成方法也可以很直觀的理解,有六面的正方體,按照一個(gè)數(shù)n來(lái)分成n個(gè)小正方形

然后將得到的點(diǎn)作歸一化 (Normalize) 處理就可以得到球體了

演示程序中得到的球體是每個(gè)面被分成 50*50 個(gè)正方形渲染的結(jié)果

可修改程序中 CubeSphere.gd?的?cube_points?變量來(lái)調(diào)整正方形的分割數(shù)量以觀察不同的球體渲染結(jié)果,建議設(shè)置的數(shù)值不宜超過(guò)100,否則數(shù)值太大程序會(huì)卡死


3. Icophere?(基于正八面體生成的球體)

利用正三角形各邊的中點(diǎn)生成新的小正三角形

基本原理就是透過(guò)分裂正三角形來(lái)逼近球體

正八面體每個(gè)正三角形的面都按照一個(gè)數(shù)n來(lái)分成n個(gè)正三角形

然后將所有三角形的點(diǎn)作歸一化 (Normalize)?處理就可以得到球體了

從八面體到球體

演示程序中得到的球體是 n=6 即每個(gè)面被分成1024三角形后渲染出來(lái)的結(jié)果

可修改程序中 IcoSphere.gd?的?tri_splitting_level?變量來(lái)調(diào)整三角形的分割次數(shù)以觀察不同的球體渲染結(jié)果,建議設(shè)置的數(shù)值不宜超過(guò)9,否則數(shù)值太大程序會(huì)卡死

以下是不同n的情況的數(shù)據(jù)列表:

4. Hexphere?(基于正二十面體生成的六邊形表面的球體)


正二十面體
平面展開(kāi)的正二十面體,可分為上中下5,10,5三組正三角形來(lái)處理

正二十面體生成的球體固定會(huì)有12個(gè)五邊形和若干個(gè)六邊形

六邊形數(shù)量公式:?

? ? ? ?? 2 * (m*(m+1)/2 + m) * 5? ? ? +? ? ? ??(m+1)*5*m? ? ? ? ?注:?m = 2^n-1

(在球兩邊 (非赤道) 的六邊形數(shù)量)? ?(在球的中間?(赤道)?的六邊形數(shù)量)?

簡(jiǎn)化后的公式:?10*m*(m+2)


畫(huà)圖找出五邊形和六邊形的出現(xiàn)規(guī)律后再編程實(shí)現(xiàn)

并且五邊形之間都是等距步數(shù),步長(zhǎng)為2的倍數(shù)

生成過(guò)程前期基本原理與IcoSphere相同,首先都是透過(guò)分裂正三角形得到更多得正三角形

但需要再進(jìn)一步處理才能得到正五邊形和正六邊形

用分裂法得到的結(jié)果顯示五邊形都固定在兩極和中間位置,六邊形也是按一定規(guī)律增減的

分裂完成后再找到每個(gè)正三角形的中心點(diǎn)按照發(fā)現(xiàn)的規(guī)律進(jìn)行聯(lián)立就可以了 (可參考代碼)

演示程序中得到的球體是 n=5 即分成共10230個(gè)六邊形并且五邊形間的步距為32

可修改程序中 HexSphere.gd?的?hexasphere_n 變量來(lái)調(diào)整三角形的分割次數(shù)以觀察不同的球體渲染結(jié)果,建議設(shè)置的數(shù)值不宜超過(guò)7,否則數(shù)值太大程序會(huì)卡死

以下是不同n的情況的數(shù)據(jù)列表:


注:其實(shí)用正八面體按照述方法也能生成表面為六邊形球體

兩極和赤道的東南西北向分別都是正方形共有6個(gè)固定的正方形

感興趣的朋友可以自己推導(dǎo)出來(lái),演示代碼就不包含此內(nèi)容了

當(dāng)正三角形分裂兩次后的正八面體草圖


利用Godot演示球體生成的4種不同的方法的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
吐鲁番市| 台东市| 拉孜县| 长岛县| 阳朔县| 河南省| 阿拉善左旗| 彰武县| 互助| 拜城县| 大冶市| 澳门| 榆中县| 汾阳市| 腾冲县| 胶州市| 长治县| 沽源县| 大余县| 读书| 左贡县| 于都县| 永新县| 涪陵区| 黄陵县| 砀山县| 随州市| 微博| 乳山市| 定边县| 阳山县| 大新县| 丽江市| 丹巴县| 鄂州市| 塔城市| 灵石县| 兰溪市| 金寨县| 日照市| 南江县|