收藏 分享(赏)

计算机图形学实验报告(一).doc

上传人:tangtianxu2 文档编号:2889008 上传时间:2018-09-29 格式:DOC 页数:6 大小:231KB
下载 相关 举报
计算机图形学实验报告(一).doc_第1页
第1页 / 共6页
计算机图形学实验报告(一).doc_第2页
第2页 / 共6页
计算机图形学实验报告(一).doc_第3页
第3页 / 共6页
计算机图形学实验报告(一).doc_第4页
第4页 / 共6页
计算机图形学实验报告(一).doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、1实验一 OpenGL 开发环境及扫描转换算法1、 实验目的与要求1. 通过实验掌握 OpenGL 中编程环境的设置,了解相关函数用途及设置步骤;2. 通过实验掌握基本图形元素的生成,给出相关代码和运行结果;3. 用 WINDOWS GDI 函数编写生成直线或区域填充的程序(选 DDA 或 Bresenham 直线算法,活性边表算法填充多边形),演示算法过程。4. 画矩形,调用一个函数画一个矩形。画椭圆,调用一个函数画一个椭圆。画 Bezier 曲线。2、 实验方案请描述为达到实验的需要完成哪些方面的实验,列举出实验的基本要点和重点。在工程 WinAPIEX 加入 void createLin

2、e(HDC tmpDC)和 void Polyline (tmpDC)在 void createLine(HDC tmpDC)用 DDA 直线算法或 Bresenham 直线算法生成直线在 void Polyline (tmpDC)添加活泩边表填充算法,生成填充四边形和八边形加入 Rectangle(tmpDC,x0,y0,x1,y1);加入 Ellipse (tmpDC, x0,y0,a,b) ;加入 PolyBezier(tmpDC,arr_vertex,4) ;3、 实验结果和数据处理1) 生成直线的 DDA 直线算法在 createLine(tmpDC)中加入以下代码int x0,y0

3、,x1,y1,color; /自定义直线的起点(x0,y0)和终点(x1,y1),及颜色 colorfloat dx,dy,x,y;int length,i;x0=50;y0=160;x1=900;y1=200;/此处修改了color=1000; color=1;if(abs(x1-x0)=abs(y1-y0)length=abs(x1-x0);elselength=abs(y1-y0);dx=(x1-x0)/(float)length;dy=(y1-y0)/(float)length;i=1;x=(float)x0;y=(float)y0;while(iMaxY)MaxY=(int)poly

4、pointi.y;/*初始化 AET 表*/AET *pAET=new AET;pAET-next=NULL;/*初始化 NET 表*/NET *pNET1024;for(i=0;inext=NULL;/*扫描并建立 NET 表*/for(i=0;ipolypointj.y)NET *p=new NET;p-x=polypointj.x;p-ymax=polypoint(j-1+POINTNUM)%POINTNUM.y;p-dx=(polypoint(j-1+POINTNUM)%POINTNUM.x-polypointj.x)/(polypoint(j-1+POINTNUM)%POINTNUM

5、.y-polypointj.y);p-next=pNETi-next;pNETi-next=p;if(polypoint(j+1+POINTNUM)%POINTNUM.ypolypointj.y)NET *p=new NET; p-x=polypointj.x;p-ymax=polypoint(j+1+POINTNUM)%POINTNUM.y;p-dx=(polypoint(j+1+POINTNUM)%POINTNUM.x-polypointj.x)/(polypoint(j+1+POINTNUM)%POINTNUM.y-polypointj.y);3p-next=pNETi-next;pNE

6、Ti-next=p;/*建立并更新活性边表AET*/for(i=0;inext;while(p)p-x=p-x + p-dx;p=p-next;/更新后新 AET 先排序*/断表排序,不再开辟空间AET *tq=pAET;p=pAET-next;tq-next=NULL;while(p)while(tq-next NET *s=p-next;p-next=tq-next;tq-next=p;p=s;tq=pAET;/(改进算法)先从 AET 表中删除ymax=i 的结点*/AET *q=pAET;p=q-next;while(p)if(p-ymax=i)q-next=p-next;delete

7、 p;p=q-next;elseq=q-next;p=q-next;/将 NET 中的新点加入 AET,并用插入法按 X 值递增排序*/p=pNETi-next;q=pAET;while(p)while(q-next NET *s=p-next;p-next=q-next;q-next=p;p=s;q=pAET;/*配对填充颜色*/p=pAET-next;while(p jnext-x;j+)SetPixel(tmpDC,static_cast(j),i,RGB(255,200,0);/此处我改变了颜色,八边形的为黄色/ 4SetPixel(tmpDC,static_cast(j),i,RGB

8、(255,0,0);/还有四边形的红色p=p-next-next;/考虑端点情况 /画矩形Rectangle(tmpDC,20,20,80,80); /左上顶点,右下顶点/画椭圆Ellipse (tmpDC, 20,20,160,360) ;/画 Bezier 曲线 ,利用已有的顶点数据PolyBezier(tmpDC,arr_vertex,4) ;实验截图:1.DDA 算法的直线2.四边形和八边形3.正方形54.椭行5.Bezier 曲线实习总结:通过本次实验,我掌握了 opengl 绘图的一些基本知识,会在 vc 里面加入 opengl 的基本库。6实验中我掌握了 DDA 算法的基本思路、多边形的填充算法的基本思路和填充颜色的一些操作,以争取达到美化的功效。本次试验老师已经把这些图形画法的算法和实现都给了我们,我们只要去修改些算法的参数就可以了。但我还是去尝试着自己去建立了些工程,但最后还是发现挺麻烦的,所以放弃了。通过本次实验,我深深地体会到了图形学的深奥和美丽之处,我发现自己已经喜欢上图形学这门课程了。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 专业基础教材

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报