我正在尝试使用 OpenGL 在 C++ 中绘制二次曲面。
二次曲面是球体,Hyperboloides一片叶子和两片叶子。为了绘制它们,我只使用了每个的参数方程。我画的球体
例子:球体的参数方程是:
为了用这些方程式绘制球体,我在 OpenGL 中所做的就是在原点 x0
、y0
和 z0 上绘制一个球体
等于零:
void Sphere(){
GLfloat x, y, z, alpha, beta; // Storage for coordinates and angles
GLfloat radius = 1.0f;
int gradation = 20;
glPolygonMode( GL_FRONT_AND_BACK, GL_LINE );
for (float alpha = 0.0; alpha < PI; alpha += PI/gradation)
{
glBegin(GL_TRIANGLE_STRIP);
for (beta = 0.0; beta < 2.01*PI; beta += PI/gradation)
{
x = radius*cos(beta)*sin(alpha);
y = radius*sin(beta)*sin(alpha);
z = radius*cos(alpha);
glVertex3f(x, y, z);
}
glEnd();
}
glutSwapBuffers();
}
我的结果是这个(球体):
问题:
通过将相同的逻辑应用于绘制双曲面,我没有得到我想要的。双曲面的参数方程如下:
当尝试用图片中显示的方程绘制一张纸的双曲面时,结果如下:
如果有人对此有任何了解,请帮助我。谢谢大家。
注意:我知道还有其他方法可以绘制双曲面,但我的绘制方法是通过其参数方程。
最佳答案
生成此输出的代码是什么,而不是生成球体的代码?请提供 MCVE。
这是我的猜测:你的循环范围只产生 z 的正值,你可以尝试 -PI
到 PI
相反。
关于c++ - 如何使用 OpenGL C++ 绘制双曲面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39763445/