2012-03-20 62 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