图形学实验指导书

实验一 线和圆的绘制

专业班级 实验学时 实验时间 2 学 号 实验类型 指导老师 验证性 姓 名 实验地点 实验成绩 年 月 日 一、实验目的: 1.掌握Bresenham画线和画圆算法。 2.掌握将图形学算法改写成程序的方法。

二、实验内容:

1.利用Bresenham画线算法画线,要求起点和终点由用户确定; 2.利用Bresenham画圆算法画圆,要求圆心和半径由用户确定。

三、实验要求:

1.完成程序的编写与验证;

2.写出实验报告,报告中只体现OnDraw中自己完成的部分,要求对程序结构做出详细的解释。

四、编程提示:

1. 在Visual C++中首先建立一个单文档MFC AppWizard工程,绘图功能在View类的OnDraw()函

数中实现;

2.教材算法中的drawpixel(x,y,color)函数在OnDraw函数中对应pDC->SetPixel(POINT,COLOR); 3.Bresenham画圆算法是基于用户坐标系(二维笛卡尔坐标系),而在屏幕上显示的象素坐标是基于设备坐标系。如图1.1,设用户坐标系的原点O对应于设备坐标系的(xc,yc)。则x1=xc+x,y1=yc-y。

图1.1 用户坐标系与设备坐标系

4.Bresenham画圆算法只画出了位于第一象限的4个分圆,要画出整个圆,必须对第一象限的点作对称变换。

五、实验步骤与结果:(由学生按照实验内容完成)

1

六、总结

2

实验二 图形裁剪

专业班级 实验学时 实验时间 2 学 号 实验类型 指导老师 验证性 姓 名 实验地点 实验成绩 年 月 日 一、实验目的: 1.掌握Sutherland直线段裁减算法。 2.掌握屏幕区域编码方法。

二、实验内容:

生成并显示窗口,要求程序中定义窗口左上和右下点的坐标值。绘制裁剪后的直线段,要求程序中定义直线段的端点坐标。

三、实验要求:

1.为View类添加相应的成员函数;

2.用不同的颜色绘制出窗口和裁剪后的直线段; 3.写出实验报告。

四、编程提示:

1. 可使用pDC的MoveTo和LineTo函数绘制窗口和裁剪后的直线段,例如绘制(x0,y0)至(x1,y1)的直线段:

POINT pix; pix.x=x0; pix.y=y0;

pDC->MoveTo(pix); pix.x=x1; pix.y=y1;

pDC->LineTo(pix);

2.修改绘制线条颜色可参考以下代码:

CPen pen(PS_SOLID,1,RGB(255,0,0));//画笔改为红色

CPen *pOldpen=pDC->SelectObject(&pen);//设置画笔并保存原画笔 POINT pix; pix.x=50; pix.y=50;

pDC->MoveTo(pix); pix.x=400; pix.y=300;

pDC->LineTo(pix);

pDC->SelectObject(pOldpen);//恢复原画笔

五、实验步骤与结果:(由学生按照实验内容完成)

3

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4