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

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

ID:61909090

大小:424.00 KB

页数:32页

时间:2020-02-25

计算机图形学实验报告.doc_第1页
计算机图形学实验报告.doc_第2页
计算机图形学实验报告.doc_第3页
计算机图形学实验报告.doc_第4页
计算机图形学实验报告.doc_第5页
资源描述:

《计算机图形学实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、.计算机图形学实验报告实验一:二维线画图元的生成实验目的:掌握直线段的生成算法,并用C/WIN-TC/VC++实现算法,包括中点法生成直线,微分数值法生成直线段等。实验内容:用不同的方法生成斜率不同的直线段,比较各种方法的效果。Bresenham算法的思想Bresenham画法与中点法相似,都是通过每列象素中确定与理想直线最近的像素来进行直线的扫描的转换的。通过各行、各列的象素中心构造一组虚拟网格线的交点,然后确定该列象素中与此交点最近的像素。该算法的巧妙之处在于可以采用增量计算,使得对于每一列,

2、只需要检查一个误差项的符号,就可以确定该列的所有对象。1.1方法一:直线的中点算法算法的主要思想:讨论斜率k∈[1,+∞)上的直线段的中点算法。对直线,左下方的端点为(x0,y0),右上方的端点为(x1,y1)。直线段的方程为:现在假定已求得像素(),则如图得word范文.由于直线的斜率k∈[1,+∞),故m=1/k∈(0,1],则在直线上,区间内存在两个像素NE和E。根据取整原则,当在中点M右方时,取像素NE,否则取像素E,即若取,则上式变为计算的递推公式如下:=算法的初始条件为:相应的程序示例

3、:建立成员函数:voidMidPointLine4(CDC*pDC,intx0,inty0,intx1,inty1,intcolor){/*假定x01*/intdx,dy,incrE,incrNE,d,x,y;dx=x1-x0;dy=y1-y0;d=2*dx-dy;incrE=2*dx;incrNE=2*(dx-dy);x=x0;y=y0;pDC->SetPixel(x,y,color);while(x

4、ncrNE;x++;}y++;p->SetPixel(x,y,color);}}编写OnDraw函数:voidCMy1_1View::OnDraw(CDC*pDC){CMy1_1Doc*pDoc=GetDocument();ASSERT_VALID(pDoc);//TODO:adddrawcodefornativedatahereMidPointLine4(pDC,200,200,300,300,RGB(0,0,0));MidPointLine4(pDC,300,200,400,300,RGB(0

5、,0,0));MidPointLine4(pDC,400,200,500,300,RGB(0,0,0));}编译运行程序得到如下结果:1.2方法二:直线的数值微分法算法的主要思想:由于课本上已经给出了斜率m∈[-1,1]上的算法,故此处给出斜率m∈[1,+∞〕上的算法,m∈(-∞,-1]上的可同理推导。已知待扫描转换的直线为(x0,y0),,又,则设k=1/m=(即k∈(0,1])。直线方程为,即。以一个像素为单位分割区间[y0,y1],由x0

6、,,….,其中=+1,得到点列,由公式word范文.故从直接得到。可能为浮点数,要对它取整,实际得到像素集。初值为:()=(x0,y0)。实验内容:编写自定义的成员函数ddaline()程序:voidCMy1View::ddaline(CDC*pDC,intx0,inty0,intx1,inty1,COLORREFcolor){intlength,i;floatx,y,dx,dy;length=abs(x1-x0);if(abs(y1-y0)>length)length=abs(y1-y0);dx

7、=(x1-x0)/length;dy=(y1-y0)/length;x=x0+0.5;y=y0+0.5;for(i=1;i<=length;i++){pDC->SetPixel((int)x,(int)y,color);x=x+dx;y=y+dy;}}编写OnDraw()函数:voidCMy1View::OnDraw(CDC*pDC){CMy1Doc*pDoc=GetDocument();ASSERT_VALID(pDoc);//TODO:adddrawcodefornativedatahered

8、daline(pDC,100,100,400,100,RGB(255,0,0));ddaline(pDC,400,100,400,400,RGB(0,255,0));ddaline(pDC,400,400,100,400,RGB(0,0,255));ddaline(pDC,100,400,100,100,RGB(255,255,0));ddaline(pDC,100,100,400,400,RGB(255,0,255));ddaline(pDC,100,400,400,100,RG

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。