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

标签 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);
}

我的方法正确吗?

最佳答案

编辑答案:您应该将曲线的 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();

注意:正弦和余弦函数的参数为​​弧度类型不是度数。如果结果仍然不是您想要的,请考虑此警告。

关于c - 如何在 OpenGL 中使用函数生成曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29775268/

相关文章:

algorithm - 如何去掉数学表达式中不必要的括号

javascript - .js 文件中的随机字符

c++ - 在具有边界/Opengl、VC++ 的开放模型上对 Vertex Normal 进行 1 环遍历

javascript - 如何计算javascript中的多项式展开系数

c - 这在 C 语言中意味着什么?

c - 提升为 unsigned 是在结果上还是在每个操作数上完成?

c++ - 库包 pcre-8.37 中的文件 pcre.h 在哪里

c - 在 execvp() 之前将忽略的信号设置为 SIG_DFL

c++ quaternion 澄清

c++ - 为什么我的 OpenGL 3.3 应用程序不绘制任何东西?