《图形学》实验六:中点Bresenham算法画圆
2015-07-03 17:33
459 查看
开发环境:
VC++6.0,OpenGL实验内容:
使用中点Bresenham算法画圆。实验结果:
代码:
#include <gl/glut.h> #define WIDTH 500 #define HEIGHT 500 #define OFFSET 15 #define R 8 void Init() //其它初始化 { glClearColor(1.0f,1.0f,1.0f,1.0f); //设置背景颜色,完全不透明 glColor3f(1.0f,0.0f,0.0f); //设置画笔颜色 glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0.0, 30.0, 0.0, 30.0); glMatrixMode(GL_MODELVIEW); //glMatrixMode(GL_PROJECTION); //设置投影 //gluOrtho2D(0.0,WIDTH,0.0,HEIGHT); //设置 } void CirclePoint(int x,int y) { glPointSize(5); //设置点的粗细 glBegin(GL_POINTS); glVertex2i(OFFSET+x,OFFSET+y); glVertex2i(OFFSET+y,OFFSET+x); glVertex2i(OFFSET-y,OFFSET+x); glVertex2i(OFFSET-x,OFFSET+y); glVertex2i(OFFSET-x,OFFSET-y); glVertex2i(OFFSET-y,OFFSET-x); glVertex2i(OFFSET+y,OFFSET-x); glVertex2i(OFFSET+x,OFFSET-y); glEnd(); } void MidBresenhamCircle(int r) { int x,y,d; x=0,y=r,d=1-r; while(x<=y){ CirclePoint(x,y); //画圆 if(d<0) d+=2*x+3; else{ d+=2*(x-y)+5; y--; } x++; } } void Display() { glClear(GL_COLOR_BUFFER_BIT); //清空颜色堆栈 MidBresenhamCircle(R); //画一个半径为150的圆(半径为8的太小了。。) glFlush(); //清空缓冲区指令 } int main(int argc,char** argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); //初始化显示模式 glutInitWindowSize(WIDTH,HEIGHT); //初始化窗口大小 glutInitWindowPosition(200,100); //初始化窗口出现位置 glutCreateWindow("中点Bresenham画圆"); //初始化窗口标题 glutDisplayFunc(Display); //注册显示函数 Init(); //其它初始化 glutMainLoop(); //进入程序循环 return 0; }
Freecode : www.cnblogs.com/yym2013
相关文章推荐
- 自开发程序动态权限设置按钮
- 引导代码
- 深度学习——人工神经网络再掀研究热潮
- hadoop datanode 启动正常,但master无法识别(50030不显示datanode节点)
- 清理ubuntu
- urllib unquote 在django template上面问题
- 类或函数包装器
- 推荐一些用CRF做图像语义分割的资源
- Binary Tree Level Order Traversal II
- Linux 中的 0x0D 与 0
- hdu 3360 最小点覆盖 **
- [转] Java快速教程
- PHP, ASP一句话网马客户端
- [Android]透明menu菜单的实现
- Android--静默安装和静默卸载
- Oracle锁表查询及解锁kill进程简介
- Spring MVC 3.0 深入及对注解的详细讲解
- android 帅气的UI框架
- ICMP
- json在PHP中应用技巧