2012-03-21 15 views
1

私は、個々のブロックから3d空間で楕円を描こうとしています。離散単位の3D楕円

は、私は、2D楕円で何の問題もない、しかし、これまでの3Dとして、私はいくつかの問題を抱えている行きます。私は2D楕円を描画するためにBresenhamの円アルゴリズムを使用しています。私がしようとしているのは、X半径とY半径の両方の半径が増加する(下から上に向かって、他の半分の対称性を使用して)レイヤーで2D楕円を描くことです。

それがうまくいくようにそれはすべてに聞こえるが、私はそれを実装するために行くとき、私は楕円の曲線を作るためのx半径とy半径を変更する方法を見つけ出すことはできません。

答えて

3

2Dスライスの向きとアスペクト比はすべて同じである必要があります。

あなたの楕円体が軸整列された場合、彼らはまた、同じ中心を持つ必要があります。

あなたのスライスはに比例して拡大縮小する必要があります(x0, y0)はx軸と最大スライスのy幅であれば、

scale = sqrt(1 - ((center-z)/half_vsize)^2) 

where: 
    z = height of the current slice 
    center = height of the largest slice 
    half_vsize = half the vertical size of the ellipsoid 

(x, y) = (scale*x0, scale*y0)は、xと高さzでのスライスのy幅です。