如何在OpenGL中设置(创建)切片圆柱体

时间:2014-05-24 23:31:38

标签: opengl geometry

你会如何创建这样的圆柱?

http://www.eicac.co.uk/Images/SLICED-CYLINDER.png

我猜gluCylinder不是一个选项?

1 个答案:

答案 0 :(得分:1)

使用一个功能区和两个风扇创建

让我们假设点[0, 0, 0]位于形状基部的中心,Z轴是向上的。使用Image中的常量。

底盖

一张简单的光盘。

glBegin(GL_TRIANGLE_FAN)
glVertex3d(0.0, 0.0, 0.0) // center
for angle from 0 to π (whatever step)
  double x = 0.5 * D * cos(angle);
  double y = 0.5 * D * sin(angle);
  glVertex3d(x, y, 0.0);
glEnd();

侧墙

我们需要计算实际的斜率函数。 它的格式为y = a * x + b,有点(0.0, H)(0.5*D, H2)

因此,我们必须解决ab。我们有b = Ha = (H2 - H) / 0.5 * D

double a = (H2 - H) / 0.5 * D;
double b = H;

glBegin(GL_TRIANGLE_STRIP)
for angle from 0 to π (whatever step)
  double x = 0.5 * D * cos(angle);
  double y = 0.5 * D * sin(angle);
  double height = a * x + b;
  glVertex3d(x, y, 0.0);
  glVertex3d(x, y, height);
glEnd();

顶帽

我们结合前面的步骤并封顶。

double a = (H2 - H) / 0.5 * D;
double b = H;

glBegin(GL_TRIANGLE_FAN)
glVertex3d(0.0, 0.0, H) // center
for angle from 0 to π (whatever step)
  double x = 0.5 * D * cos(angle);
  double y = 0.5 * D * sin(angle);
  double height = a * x + b;
  glVertex3d(x, y, height);
glEnd();