2012-03-20 100 views
1

所以我試圖從離散的「塊」中劃出一個球體。我需要用整數來完成。我正試圖迴避trig函數。 Bresenham的循環算法是目前唯一對我來說似乎合理的事情,但我想不出讓它在三維空間中工作的方法。Bresenham的三維圓形算法?

我也希望這也適用於橢球。

另外,出於好奇,我想知道,這個算法怎麼能在N維中工作?顯然這沒有任何實際用途(至少我能想到),但我仍然很好奇。

+0

實際上我不確定是否有一個從圓算法到球體的簡單泛化,原則上這個圓定期細分爲任意整數的相等部分,而這個球體通常被分成相等的部分,只是受到嚴格的限制,或許值得多說一些,以便定義這個問題,塊體是立方體,大小相等,它們可以重疊嗎?或者它確實是一個問題選擇「最接近」球體表面的格點? – hardmath 2012-03-20 15:56:19

+0

另外,你有沒有看到[這個較早的問題](http://stackoverflow.com/q/564492/487781)和答案? – hardmath 2012-03-20 15:58:50

回答

1

您可能需要分層繪製球體。對於半徑爲R,以CX,CY,CZ爲中心的球體,最底部的塊將位於CX,CY(CZ-R)處。當您向上一層時,測試[PX + 1,PX,PX-1],[PY + 1,PY,PY-1],PZ + 1(這裏「P」是「Plotted」距離CX,CY,CZ最近的距離R

對於每個單獨的圖層,我可能會使用距離CX,CY,CZ的(3D)距離,因爲它稍微簡單一些。對稱利用,減少所需的計算次數

+0

+1互聯網我的朋友 – SpaceFace 2012-03-20 16:00:38