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

上传人:wj 文档编号:1849623 上传时间:2023-05-01 格式:DOC 页数:6 大小:60.50KB
下载 相关 举报
图形学-绘制任意斜率的直线段.doc_第1页
第1页 / 共6页
图形学-绘制任意斜率的直线段.doc_第2页
第2页 / 共6页
图形学-绘制任意斜率的直线段.doc_第3页
第3页 / 共6页
图形学-绘制任意斜率的直线段.doc_第4页
第4页 / 共6页
图形学-绘制任意斜率的直线段.doc_第5页
第5页 / 共6页
图形学-绘制任意斜率的直线段.doc_第6页
第6页 / 共6页
亲,该文档总共6页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

《图形学-绘制任意斜率的直线段.doc》由会员分享,可在线阅读,更多相关《图形学-绘制任意斜率的直线段.doc(6页珍藏版)》请在冰点文库上搜索。

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

《计算机图形学》实验设计报告

实验二绘制任意斜率的直线段

一、实验目的

1、掌握任意斜率直线段的中点Bresenham的扫描转换算法。

2、掌握Cline直线类的设计方法。

3、掌握状态栏编辑方法。

二、实验要求

1、设计CLine直线类,其数据成员为直线段的起点坐标()和直线段的斜率k,其对应的成员函数为MoveTo()和LineTo()函数。

2、在Cline类中绘制直线段斜率为[-1,0]区间类的直线。

3、在MoveTo()函数中对应的参数为起始点的坐标,在LineTo()函数中对应的参数为CDC和直线段的斜率。

三、设计Cline直线类

在CDC类的成员函数中有MoveTo()和LineTo()函数用于绘制任意斜率的直线段,直线的颜色由所选用的画笔指定。

利用任意斜率直线段的中点Bresenham算法,可以分析得出,当直线段的斜率时,对应的初始值为,对应的误差项为,判别条件为:

,递推公式为

以此条件,即可在Line.cpp中用循环语句绘制直线。

四、程序运行的核心代码

1、首先建立一个Cline类,并且在Line.h中写出如下代码:

classCLine

{

public:

CLine();

virtual~CLine();

voidMoveTo(doublex,doubley);

voidLineTo(CDC*,doublek);

private:

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<100;i++){

if(d>0)

{y0--;

d-=1+k;

}

else

d-=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);

pDC->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);

五、程序运行结果及图形界面

六、心得体会

这次实验是通过Cline类来绘制直线,利用直线段的起点、斜率和两成员函数MoveTo()、LineTo()对直线在斜率为-0.6时,作出了直线的图形。

在实验过程中,最先想用书上的方法即直线的两点式来绘制图形,但发现很复杂,在老师的指导下用直线的起点和斜率来绘制图形,代码很简单,效果也较好。

更深刻的体会到,在程序设计语言中,应选择最合适的方法来实现题目要实现的功能,尽量使代码简便,以便于及时完成实验要求。

另外,当把源程序保存在文件夹中时,再次在文件夹中使用时,总有错误,这是一个不会解答的问题?

6

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2