algorithm - 离散单元的 3D 椭球体

标签 algorithm opengl 3d

我正在尝试在 3d 空间中用单个 block 绘制一个椭圆体。

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

听起来好像行得通,但是当我去实现它时,我不知道如何改变 x 半径和 y 半径来制作椭圆体的曲线。

最佳答案

您的 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 宽度。

关于algorithm - 离散单元的 3D 椭球体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9811582/

相关文章:

Qt & OpenGL - QGLWidget & QPainter : depth buffering

opengl - DirectX/OpenGL 中的三角形绘制顺序

opengl-es - 在 Symbian^3 中通过 VBO 方法加载 3D 对象时获取 KERN-EXEC 3,为什么?

java - 4D 到 3D 透视投影

python - 在python中实现LZ78压缩算法

c++ - 如何使用 std::mem_fun 传递参数

algorithm - sortedArrayUsingComparator 是随机化 NSArray 的安全方法吗?

opengl - 一次渲染到多个帧缓冲区

c++ - 鼠标位置改变绘制立方体的大小

algorithm - 这个循环是做什么的?