图形学-绘制任意斜率的直线段.doc

图形学-绘制任意斜率的直线段.doc

ID:52689906

大小:60.50 KB

页数:6页

时间:2020-03-29

图形学-绘制任意斜率的直线段.doc_第1页
图形学-绘制任意斜率的直线段.doc_第2页
图形学-绘制任意斜率的直线段.doc_第3页
图形学-绘制任意斜率的直线段.doc_第4页
图形学-绘制任意斜率的直线段.doc_第5页
资源描述:

《图形学-绘制任意斜率的直线段.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《计算机图形学》实验设计报告实验二绘制任意斜率的直线段一、实验目的1、掌握任意斜率直线段的中点Bresenham的扫描转换算法。2、掌握Cline直线类的设计方法。3、掌握状态栏编辑方法。二、实验要求1、设计CLine直线类,其数据成员为直线段的起点坐标()和直线段的斜率k,其对应的成员函数为6MoveTo()和LineTo()函数。2、在Cline类中绘制直线段斜率为[-1,0]区间类的直线。3、在MoveTo()函数中对应的参数为起始点的坐标,在LineTo()函数中对应的参数为CDC和直线段的斜率。三、设计Cline直线类在CDC

2、类的成员函数中有MoveTo()和LineTo()函数用于绘制任意斜率的直线段,直线的颜色由所选用的画笔指定。利用任意斜率直线段的中点Bresenham算法,可以分析得出,当直线段的斜率时,对应的初始值为,对应的误差项为,判别条件为:,递推公式为以此条件,即可在Line.cpp中用循环语句绘制直线。四、程序运行的核心代码1、首先建立一个Cline类,并且在Line.h中写出如下代码:classCLine{public:CLine();virtual~CLine();voidMoveTo(doublex,doubley);voidLine

3、To(CDC*,doublek);6private:doublex;doubley;doublek;};2、在Line.cpp中书写如下代码,并要加头文件#include"Line.h"CLine::CLine(){}CLine::~CLine(){}voidCLine::MoveTo(doublex0,doubley0){this->x=x0;this->y=y0;}voidCLine::LineTo(CDC*pDC,doublek){doubled;doublex0=0.0,y0=0.0;d=-0.5-k;for(inti=0;i<

4、100;i++){if(d>0){y0--;6d-=1+k;}elsed-=k;x0++;pDC->SetPixel(x0,y0,RGB(255,0,0));}}3、在sourcefile中"TestView.h"下的OnDraw函数中输入如下代码voidCMFCView::OnDraw(CDC*pDC){CMFCDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);CRectrc;GetClientRect(&rc);//对坐标原点的映射pDC->SetMapMode(MM_ANISOTROPIC);pD

5、C->SetWindowExt(rc.Width(),rc.Height());pDC->SetViewportExt(rc.right,-rc.bottom);pDC->SetViewportOrg(rc.right/2,rc.bottom/2);CLines;s.MoveTo(1.0,1.0);s.LineTo(pDC,-0.6);6五、程序运行结果及图形界面六、心得体会这次实验是通过Cline6类来绘制直线,利用直线段的起点、斜率和两成员函数MoveTo()、LineTo()对直线在斜率为-0.6时,作出了直线的图形。在实验过程中

6、,最先想用书上的方法即直线的两点式来绘制图形,但发现很复杂,在老师的指导下用直线的起点和斜率来绘制图形,代码很简单,效果也较好。更深刻的体会到,在程序设计语言中,应选择最合适的方法来实现题目要实现的功能,尽量使代码简便,以便于及时完成实验要求。另外,当把源程序保存在文件夹中时,再次在文件夹中使用时,总有错误,这是一个不会解答的问题?6

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

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

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