1 / 13
文档名称:

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

格式:doc   大小:1,154KB   页数:13页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

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

上传人:luyinyzhi 2017/10/25 文件大小:1.13 MB

下载得到文件列表

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

文档介绍

文档介绍:苏州科技学院
计算机图形学实验报告
学期 12- 13学年第2学期
专业地理信息系统
班级地信1111班
学号 1120209129
姓名徐伟杰
任课教师白俊武
实验报告1:直线的扫描转换
实验地点 C1机房实验日期 2013年3月5日
一、目的与要求
目的:认识和掌握三种主要的直线扫描转换的基本原理和编程方法
方法:
1、自定义坐标系,绘制坐标轴
2、绘制20×20的坐标格网
3、编制程序实现直线的扫描转换的DDA法
4、编制程序实现直线的扫描转换的中点画线法
5、编制程序实现直线的扫描转换的Bresenham画线法
二、方法与步骤
(1)新建VB窗体exe程序,添加picturebox控件;
(2)编写自定义picturebox控件坐标系代码并使用Line方法显示坐标轴:ShowGrid();
(3)使用Line方法显示坐标格网:Sub ShowAxis();
(4)在Form_Load() = True(在此过程中窗口为不可见,因
此不能在此绘坐标轴,=true),并调用ShowGrid()和
ShowAxis();
(5)添加接收输入数据(比如起始点坐标);
(6)添加三个按钮分别响应三种直线绘制方法(先实现直线斜率在0到1之间的情况),
算法的关键是确定当前点的下一点的位置,确定后位置后使用Circle方法标记直线经过的
点;
(7)添加一个按钮编写点击事件进行清屏(使用Cls方法后,需重绘坐标轴和坐标格网)
(8)考虑其他直线斜率的情况,进一步完善三种直线生成算法。
实验代码:
Dim a As Integer, b As Integer
Dim delta1 As Integer, delta2 As Integer
Dim d As Integer
Dim X As Integer, Y As Integer
Dim dx As Single, dy As Single, k As Single
dx = x1 - x0: dy = y1 - y0
k = dy / dx
a = y0 - y1
b = x1 - x0
d = a + * b
delta1 = a
delta2 = a + b
X = x0: Y = y0
(X, Y), , LColor
Do While X < x1
If d < 0 Then
X = X + 1
Y = Y + 1
d = d + delta2
Else
X = X + 1
d = d + delta1
End If
(X, Y), , LColor
Loop
三、实验成果
界面参考:
实验报告2:圆的扫描转换
实验地点 C1机房日期 2013年3月19日
一、目的与要求
目的:认识和理解圆的扫描转换基本原理,编程实现相关算法
要求:
1、编写中点画圆法函数
2、编写Bresenham 画圆法函数
3、对圆的生成算法进改进
二、方法与步骤
(1)中点画圆法
按顺时针方向生成第二个八分圆,第一个像素为(0,R),判别式d 的初始值为d0=-R
确定是第二个八分圆
(2)Bresenham 画圆法
按顺时针方向生成第一、第二个八分圆,第一个像素为(0,R)
实验代码:
Sub midpoint_circle(ByVal r%, ByVal X%, ByVal Y%, olor As ColorConstants)
Dim d!
X = 0: Y = r: d = - r
(X, Y), , CColor
' (x0, y0 + r), , ccolor
' (x0, y0 - r), , ccolor
' (x0 - r, y0), , ccolor
' (x0 + r, y0), , ccolor
Do While X < Y

If d < 0 Then
d = d + 2 * X + 3
X = X + 1
Else
d = d + 2 * (X - Y) + 5
X = X + 1: Y = Y - 1
End If
' (x, y), ,