如何使用函数在OpenGL中生成曲线

时间:2015-04-21 14:34:03

标签: c opengl math dev-c++ curves

我想知道如何使用这些函数在OpenGL中生成曲线:

  

x(t)= sin(t)+ 1/2 sin(5t)+ 1/4 cos(2,3t)

     

y(t)= cos(t)+ 1/2 cos(5t)+ 1/4 sin(2,3t)

enter image description here

这是一次大学练习,我已经用圆圈做了些什么,但是曲线我遇到了问题。

我没有抓住构建曲线的方法,我试图构建一个代码来生成一条简单的曲线,看看它是如何工作的,但它完全错误,因为它产生了非常的东西奇怪。我想看一个简单的曲线示例,用这个函数来理解我必须如何开始像打印一样构建绘图。

测试代码:

void exerciseTwo(){
 write("Exercise Two", -5, 18);

 float x = 0, y = 0, t =0;

 glPushMatrix();
     glBegin(GL_LINE_STRIP);
     for(t = -10.0; t < 10.0; t += 0.1){
           x = sin(t) + ((1/2) * sin(5 * t)) + ((1/4) * cos(2.3 * t));
          glVertex2f(x, t);
     }       

     for(t = -10.0; t < 10.0; t += 0.1){
           y = cos(t) + ((1/2) * cos(5 * t)) + ((1/4) * sin(2.3 * t));
           glVertex2f(t, y);
     }

     glEnd();
 glPopMatrix();

 write("Press 0 (zero) to come back.", -10, -18);
}

我是否以正确的方式?

1 个答案:

答案 0 :(得分:1)

编辑答案:您应该将曲线的x和y部分表示为1个顶点,否则会得到无关的结果。这是更正:

glPushMatrix();
     glBegin(GL_LINE_STRIP);
     for(t = -10.0; t < 10.0; t += 0.1){
           x = sin(t) + ((1/2) * sin(5 * t)) + ((1/4) * cos(2.3 * t));
           y = cos(t) + ((1/2) * cos(5 * t)) + ((1/4) * sin(2.3 * t));
           glVertex2f(x, y);
     }         
     glEnd();
 glPopMatrix();

注意:正弦余弦函数的参数为​​ radian 类型 not degree 。如果结果仍然不符合您的要求,请考虑此警告。