博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《图形学》实验六:中点Bresenham算法画圆
阅读量:6948 次
发布时间:2019-06-27

本文共 1844 字,大约阅读时间需要 6 分钟。

开发环境:

VC++6.0,OpenGL

实验内容:

使用中点Bresenham算法画圆。

实验结果:

代码:

1 #include 
2 3 #define WIDTH 500 4 #define HEIGHT 500 5 #define OFFSET 15 6 #define R 8 7 8 void Init() //其它初始化 9 {10 glClearColor(1.0f,1.0f,1.0f,1.0f); //设置背景颜色,完全不透明11 glColor3f(1.0f,0.0f,0.0f); //设置画笔颜色12 13 glMatrixMode(GL_PROJECTION);14 glLoadIdentity();15 gluOrtho2D(0.0, 30.0, 0.0, 30.0);16 glMatrixMode(GL_MODELVIEW);17 18 //glMatrixMode(GL_PROJECTION); //设置投影19 //gluOrtho2D(0.0,WIDTH,0.0,HEIGHT); //设置20 }21 22 void CirclePoint(int x,int y)23 {24 glPointSize(5); //设置点的粗细25 glBegin(GL_POINTS);26 27 glVertex2i(OFFSET+x,OFFSET+y);28 glVertex2i(OFFSET+y,OFFSET+x);29 glVertex2i(OFFSET-y,OFFSET+x);30 glVertex2i(OFFSET-x,OFFSET+y);31 glVertex2i(OFFSET-x,OFFSET-y);32 glVertex2i(OFFSET-y,OFFSET-x);33 glVertex2i(OFFSET+y,OFFSET-x);34 glVertex2i(OFFSET+x,OFFSET-y);35 36 glEnd();37 }38 39 void MidBresenhamCircle(int r)40 {41 int x,y,d;42 x=0,y=r,d=1-r;43 while(x<=y){44 CirclePoint(x,y); //画圆45 if(d<0)46 d+=2*x+3;47 else{48 d+=2*(x-y)+5;49 y--;50 }51 x++;52 }53 }54 55 void Display()56 {57 glClear(GL_COLOR_BUFFER_BIT); //清空颜色堆栈58 59 MidBresenhamCircle(R); //画一个半径为150的圆(半径为8的太小了。。)60 61 glFlush(); //清空缓冲区指令62 }63 64 int main(int argc,char** argv)65 {66 glutInit(&argc,argv);67 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); //初始化显示模式68 glutInitWindowSize(WIDTH,HEIGHT); //初始化窗口大小69 glutInitWindowPosition(200,100); //初始化窗口出现位置70 glutCreateWindow("中点Bresenham画圆"); //初始化窗口标题71 72 glutDisplayFunc(Display); //注册显示函数73 Init(); //其它初始化74 glutMainLoop(); //进入程序循环75 76 return 0;77 }

Freecode : 

转载地址:http://johnl.baihongyu.com/

你可能感兴趣的文章
ODE的buggy例程分析
查看>>
判断文章/帖子操作权限
查看>>
计算机英文缩写
查看>>
Windows2003 SQL2005解决系统Administrator密码不知道的问题
查看>>
curl常用的5个例子(转)
查看>>
wCF 问题收集页
查看>>
《ASP.NET MVC4 WEB编程》学习笔记------.net mvc实现原理ActionResult/View
查看>>
1、传感器概述
查看>>
需求分析报告和需求规格说明书有什么区别
查看>>
转:Vmware Exsi使用简要说明
查看>>
MessageDigest简单介绍
查看>>
Apache commons-net用法的一个示例
查看>>
第三方平台正式支持接入微信公众平台JS-SDK
查看>>
openpgp和gnupg
查看>>
你是程序猿这块料吗?
查看>>
WordCount 远程集群源码
查看>>
java Date获取 年月日时分秒
查看>>
iOS 9应用开发教程之使用代码添加按钮美化按钮
查看>>
记一次服务器被恶意攻击的情况
查看>>
一个例子:HelloWorld
查看>>