ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:121.81KB ,
资源ID:13684881      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13684881.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机图形学上机报告Word文件下载.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机图形学上机报告Word文件下载.docx

1、1.DDA算法画直线2. 中点Bresenham算法画直线3. 改进Bresenham算法画直线4. Bresenham算法画圆四. 源程序#include gl/glut.h#include stdio.hint m_PointNumber = 0; /动画时绘制点的数目int m_DrawMode = 4; /绘制模式 1 DDA算法画直线 / 2 中点Bresenham算法画直线 / 3 改进Bresenham算法画直线 / 4 八分法绘制圆 / 5 四分法绘制椭圆/绘制坐标线void DrawCordinateLine(void) int i = 0 ; /坐标线为黑色 glColor

2、3f(0.0f, 0.0f ,0.0f); glBegin(GL_LINES); for (i=10;i abs(dy) epsl = abs(dx); else epsl = abs(dy); xIncre = (float)dx / epsl ; yIncre = (float)dy / epsl ; for(k = 0; k=num-1) printf(x=%f,y=%f,取整后 x=%d,y=%dn, x, y, (int)(x+0.5),(int)(y+0.5); break; x += xIncre; y += yIncre; if(x = 25 | y = 25) break;

3、void BresenhamLine(GLsizei x0, GLsizei y0, GLsizei x1, GLsizei y1, GLsizei num)中点Bresenham算法画直线:各点坐标及判别式的值n GLsizei dx,dy,d,UpIncre,DownIncre,x,y,xend=0; if(x0x1) x=x1;x1=x0;x0=x; y=y1;y1=y0;y0=y; x=x0;y=y0; dx=x1-x0;dy=y1-y0; d=dx-2*dy; UpIncre=2*dx-2*dy;DownIncre=-2*dy; while (x x+; if(d= 50) brea

4、k;void Bresenham2Line(GLsizei x0, GLsizei y0, GLsizei x1, GLsizei y1, GLsizei num)改进的Bresenham算法画直线: GLsizei x,y,dx,dy,e; dy=y1-y0; e=-dx;x=x0; e=e+2*dy; if(e e=e-2*dx;void BresenhamCircle(GLsizei x, GLsizei y, GLsizei r, GLsizei num)Bresenham算法画圆: x=0,y=r; GLsizei d=1-r;y)=num) putpixel(y,x); putpi

5、xel(-y,x); putpixel(-x,y); putpixel(-x,-y); putpixel(-y,-x); putpixel(y,-x); putpixel(x,-y);0)d+=2*x+3; else d+=2*(x-y)+5; y-;/初始化窗口void Initial(void) / 设置窗口颜色为蓝色 glClearColor(1.0f, 1.0f, 1.0f, 1.0f);/ 窗口大小改变时调用的登记函数void ChangeSize(GLsizei w, GLsizei h) if(h = 0) h = 1; / 设置视区尺寸 glViewport(0, 0, w,

6、h); / 重置坐标系统 glMatrixMode(GL_PROJECTION); glLoadIdentity(); / 建立修剪空间的范围 if (w = h) glOrtho (0.0f, 250.0f, 0.0f, 250.0f*h/w, 1.0, -1.0); else glOrtho (0.0f, 250.0f*w/h, 0.0f, 250.0f, 1.0, -1.0);/ 在窗口中绘制图形void ReDraw(void) /用当前背景色填充窗口 glClear(GL_COLOR_BUFFER_BIT); /画出坐标线 DrawCordinateLine(); switch(m_

7、DrawMode) case 1: DDACreateLine(0,0,20,15,m_PointNumber); break; case 2: BresenhamLine(0,0,20,15,m_PointNumber); case 3: Bresenham2Line(1,1,8,6,m_PointNumber); case 4: BresenhamCircle(5,5,18,m_PointNumber); default: glFlush();/设置时间回调函数void TimerFunc(int value) if(m_PointNumber = 0) value = 1; m_Poin

8、tNumber = value; glutPostRedisplay(); glutTimerFunc(500, TimerFunc, value+1);/设置键盘回调函数void Keyboard(unsigned char key, int x, int y) if (key = 1) m_DrawMode = 1;2) m_DrawMode = 2;3) m_DrawMode = 3;4) m_DrawMode = 4; m_PointNumber = 0;/void main(void)int main(int argc, char* argv) glutInit(&argc, argv); /初始化GLUT库OpenGL窗口的显示模式 glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(800,600); glutInitWindowPosition(100,100); glutCreateWindow(基本图元绘制程序 glutDisplayFunc(ReDraw); glutReshapeFunc(ChangeSize); glutKeyboardFunc(Ke

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1