答案 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)
。
因此,我们必须解决a
和b
。我们有b = H
和a = (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();