预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

计算机图形学 实验报告 专业:信息与计算科学 班级:1002班 学号:10080602** 姓名:***** 1.实验目的 熟悉CDC类的MoveTo()和LineTo()直线段绘制函数。 熟悉斜率-1<k<0内任意值的直线段的中点Bresenham扫描转换算法。 2.问题分析 通过Cline类来模拟CDC类完成任意斜率的直线段绘制,同样提供MoveTo()和LineTo()成员函数。 3.实验步骤 (1)规定颜色的处理,定义了CRGB类. (2)设计CLine直线类. (3)在直线类中创建MoveTo()和LineTo()成员函数. 4.部分程序代码 #Line.h classCLine { public: CLine(); virtual~CLine(); voidMoveTo(double,double); voidLineTo(CDC*pDC,double,double,double); public: CPointm_p1; CPointm_p2; }; #Line.cpp CLine::CLine() { } CLine::~CLine() { } voidCLine::MoveTo(doublex,doubley) { m_p1=CPoint(x,y); } voidCLine::LineTo(CDC*pDC,doublex,doubley,doublek) { m_p2=CPoint(x,y); CPointp,t; pDC->SetMapMode(MM_LOMETRIC); pDC->SetViewportOrg(200,200); doubled; if(k>=-1.0&&k<0.0) { if(m_p1.x>m_p2.x) { t=m_p1; m_p1=m_p2; m_p2=t; } d=-0.5-k; for(p=m_p1;p.x<m_p2.x;p.x++) { pDC->SetPixel(p.x,p.y,RGB(0,0,255)); if(d>0) { p.y--; d-=1+k; } else { d-=k; } } } } voidCTEXTView::OnDraw(CDC*pDC) { CTEXTDoc*pDoc=GetDocument(); ASSERT_VALID(pDoc); CLinecline; cline.MoveTo(-200,300); cline.LineTo(pDC,200,-300,-0.3); } 5.程序效果图 6.实验总结 本实验实现了一个类似于CDC类的MoveTo()函数和LineTo()函数,用于绘制任意斜率的直线段,这次只是绘制固定斜率的直线段,但还是出现了很多问题,经过与同学的讨论解决了问题。