使用openGL实现抛物线
推导过程
结果
代码
#include
#include // 初始化OpenGL场景
void Initial() {glClearColor(1.0f, 1.0f, 1.0f, 1.0f); //设置窗口背景颜色为白色glMatrixMode(GL_PROJECTION); //设置投影参数gluOrtho2D(-400.0, 400.0, -300.0, 300.0); // 投影面上的模型坐标范围
}//中点BH画抛物线
void Paowuxian(int a, int b) {int x, y;float d1, d2;x = 0;y = 0;d1 = a * (x + 0.5) - b * (y + 1) * (y + 1);//判别式glBegin(GL_POINTS);glVertex2i(x, y);glVertex2i(x, -y);//补第四象限的图像while (y < 0.5 * a / b) {if (d1 <= 0) {d1 += a - (2 * y + 3) * b;y++;x++;}else {d1 -= (2 * y + 3) * b;y++;}glVertex2i(x, y);glVertex2i(x, -y);//补第四象限上对称的点}//下半部分d2 = a / 2 - b / 4;while (x < 1000) { //由于抛物线不封闭会一直画下去,所以设置一个结束条件if (d2 <= 0) {d2 += a;x++;}else {d2 += a - (2 * y + 2) * b;x++;y++;}glVertex2i(x, y);glVertex2i(x, -y);//补第四象限上对称的点}glEnd();
}//上半部分// 显示图形
void Display(void) {void Paowuxian(int a, int b);glClear(GL_COLOR_BUFFER_BIT); //用当前背景色填充窗口glColor3f(1.0f, 0.0f, 0.0f); //设置当前的绘图颜色为红色Paowuxian(100,1);glFlush(); //处理所有的OpenGL程序
}int main(int argc, char* argv[]) {glutInit(&argc, argv); // glut初始化glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);//初始窗口显示模式glutInitWindowSize(800, 600); //设置窗口的尺寸glutInitWindowPosition(200, 200); //设置窗口的位置glutCreateWindow("基本图形生成"); //创建一个窗口glutDisplayFunc(Display); //设置当前窗口的显示回调函数Initial(); //完成窗口初始化glutMainLoop(); //启动主GLUT事件处理循环return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
