《计算机图形学》实验指导书Word格式文档下载.docx
- 文档编号:22879024
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:11
- 大小:34.78KB
《计算机图形学》实验指导书Word格式文档下载.docx
《《计算机图形学》实验指导书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《《计算机图形学》实验指导书Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
实验七画图软件的编制31
实验一实现DDA、中点画线算法和Bresenham画线算法
【实验目的】
1、掌握直线的多种生成算法;
2、掌握二维图形显示原理。
【实验环境】
VC++6.0/BC
【实验性质及学时】
验证性实验,2学时,必做实验
【实验内容】
利用任意的一个实验环境,编制源程序,分别实现直线的三种生成算法,即数字微分法(DDA)、中点画线法以及Bresenham画线算法。
【实验原理】
1、数字微分法(DigitalDifferentialAnalyzer,DDA)
算法思想:
基于直线的微分方程来生成直线。
ε=1/max(|△x|,|△y|)
max(|△x|,|△y|)=|△x|,即|k|≤1的情况:
max(|△x|,|△y|)=|△y|,此时|k|≥1:
2、中点画线法
每次在最大位移方向上走一步,另一方向是否走步取决于误差项的判断。
3、Bresenham画线算法
其基本思想同中点算法一样,即每次在最大位移方向上走一步,而另
一个方向是否走步取决于误差项的判断。
【实验要求】
1.上交源程序;
2.上交实验报告,实验报告内容如下:
(1)实验名称
(2)实验目的
(3)算法实现的设计方法及程序流程图
(4)程序结果分析
【分析与思考】
(1)上述所阐述的三个算法,其基本算法只能适用于直线的斜率(|K|<
=1)的情形,如何将上述算法进行推广,使其能够处理任意斜率的直线?
(2)计算机显示屏幕的坐标圆心在哪里,与我们平时的习惯有什么差异,如何协调二者?
实验二实现Bezier曲线
1、掌握Bezier曲线的定义;
2、能编程实现N次Bezier曲线的绘制与显示。
VC++6.0/TurboC
验证性实验,2学时,必做实验
编程实现N次Brezier曲线的绘制。
Bezier曲线的定义:
P(t)=
t∈[0,1]
=
tk(1-t)n-k=Ckntk(1-t)n-k
k=0,1,2,3,……,n
(1)实验名称
(2)实验目的
(3)算法实现的设计方法及程序流程图
(4)程序结果分析
实验三实现B样条曲线
1、掌握B样条曲线的定义;
2、能编程实现B样条曲线的绘制与显示。
验证性实验,2学时,选做实验
编程实现B样条曲线的绘制和显示。
B样条曲线的定义:
C(u)=
是调和函数,也称为基函数,按照递归公式可以定义为:
=1若ti≤u≤ti+1
0其他
+
(tk≤u≤tn+1)
实验四实现多边形填充的边界标志算法
1、掌握多边形填充的基本原理;
2、掌握边界标志算法来实现多边形填充的思想。
2学时,选做实验
编制程序,完成一个多边形区域的填充过程,能够完整的展示边界标志算法填充的全过程。
边界标志算法填充算法的伪程序如下:
#defineFALSE0
edge_mark_fill(polydef,color)
多边形定义polydef;
intcolor;
{
对多边形polydef每条边进行直线扫描转换;
inside=FALSE;
for(每条与多边形polydef相交的扫描线y)
for(扫描线上每个像素x)
{
if(像素x被打上边标志)
inside=!
(inside);
if(inside!
=FALSE)
drawpixel(x,y,color);
else
drawpixel(x,y,background);
}
实验五实现裁剪多边形的Cohen-Sutherland算法
1、掌握多边形裁剪的基本原理;
2、掌握Cohen-Sutherland算法来实现多边形裁减的思想。
验证性实验,2学时,选做实验
编制程序,利用Cohen-Sutherland算法完成一个多边形的裁减过程。
1.算法基本思想
对每条直线段p1(x1,y1)p2(x2,y2)分三种情况处理:
(1)直线段完全可见,“简取”之。
(2)直线段完全不可见,“简弃”之。
(3)直线段既不满足“简取”的条件,也不满足“简弃”的条件,需要对直线段按交点进行分段,分段后重复上述处理。
2.算法步骤
(1)编码
对于任一端点(x,y),赋予一个4位的二进制码D3D2D1D0。
编码规则如下:
若x<
wxl,则D0=1,否则D0=0;
若x>
wxr,则D1=1,否则D1=0;
若y<
wyb,则D2=1,否则D2=0;
若y>
wyt,则D3=1,否则D3=0。
(2)裁剪
先求出端点p1和p2的编码code1和code2,然后:
若code1|code2=0,对直线段应简取之。
若code1&
code2≠0,对直线段可简弃之。
若上述两条件均不成立。
则需求出直线段与窗口边界的交点。
在交点处把线段一分为二,其中必有一段完全在窗口外,可以弃之。
再对另一段重复进行上述处理,直到该线段完全被舍弃或者找到位于窗口内的一段线段为止。
(3)求交
假定直线的端点坐标为(x1,y1)和(x2,y2)左、右边界交点的计算上、下边界交点的计算。
3.算法实现
(1)输入直线段的两端点坐标:
p1(x1,y1)、p2(x2,y2),以及窗口的四条边界坐标:
wyt、wyb、wxl和wxr。
(2)对p1、p2进行编码:
点p1的编码为code1,点p2的编码为code2。
(3)若code1|code2=0,对直线段应简取之,转(6);
否则,若code1&
code2≠0,对直线段可简弃之,转(7);
当上述两条均不满足时,进行步骤(4)。
(4)确保p1在窗口外部:
若p1在窗口内,则交换p1和p2的坐标值和编码。
(5)按左、右、上、下的顺序求出直线段与窗口边界的交点,并用该交点的坐标值替换p1的坐标值。
也即在交点s处把线段一分为二,并去掉p1s这一段。
考虑到p1是窗口外的一点,因此可以去掉p1s。
转
(2)。
(6)用直线扫描转换算法画出当前的直线段p1p2。
(7)算法结束。
实验六二维图形的基本几何变换
1、掌握二维图形基本的几何变换原理及变换矩阵;
2、掌握矩阵运算的程序设计。
实现二维图形的基本变换,包括平移、旋转、比例、对称变换。
二维图形齐次坐标变换矩阵一般表达式:
T2D=
这3×
3矩阵中各个元素功能一共可以分成四块,即:
其中
是对图形进行缩放、旋转、对称、错切等变换;
[cf]是对图形进行平移;
对图形作投影变换;
g的作用是在x轴的1/g处产生一个灭点,h的作用是在y轴的1/h处产生一个灭点;
[i]是对整体图形作伸缩变换。
实验七画图软件的编制
1、综合应用计算机图形学的基本知识和原理;
2、初步掌握利用高级语言来开发设计图形软件的能力。
综合性实验,4学时,必做实验
编制程序,完成一个小型的图形处理软件。
该软件能够生成基本的图形元素,能够实现简单的区域填充,以及做一些简易的图形变换。
要求界面友好,功能完善,操作简便。
综合计算机图形学各种基本图形的生成算法,以及各种填充算法和二维图形变换的基本原理,来开发设计该软件。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机图形学 计算机 图形学 实验 指导书