离散单位的3D椭圆体

时间:2012-03-21 19:31:30

标签: algorithm opengl 3d

我正在尝试从单个块中的3d空间中绘制一个椭圆体。

我对2D省略号没有任何问题,但就3D而言,我遇到了一些麻烦。我正在使用Bresenham的圆算法绘制2D椭圆。我要做的是在X半径和Y半径上绘制二维椭圆,在半径上增加(从底部开始向上,使用另一半的对称性)半径。

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

1 个答案:

答案 0 :(得分: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)是切片高度z的x和y宽度。