2012-03-21 61 views
1

我试图在三维空间中绘制出一个椭球。离散单元中的3D椭球

我对2D椭圆没有问题,但就3D而言,我遇到了一些麻烦。我使用Bresenham的圆算法绘制2D椭圆。我想要做的是在图层中绘制2D椭圆,并在X半径和Y半径上增加(从底部向上,使用另一半的对称)半径。

这一切听起来像它会工作,但是当我去实现它时,我无法弄清楚如何改变x半径和y半径来制作椭球体的曲线。

回答

3

您的2D切片应该都具有相同的方向和长宽比。

如果您的椭球是轴对齐的,它们也应该具有相同的中心。

你的片应在按比例缩放到:

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 

如果(x0, y0)是x和最大片的y宽度,(x, y) = (scale*x0, scale*y0)是x和高空z切片的y宽度。