实验三 二维图形的几何变换.doc
文本预览下载声明
计算机图形学
实验指导书
陈华光、陈多、刘长松编
专业班级 计算机0902 _
姓 名 _
学 号 200903010225 _
湖南工程学院
二○一二年六月
计算机图形学实验报告三
实验名称 二维图形的几何变换 评分 _
实验日期 2012 年 6 月 11 日 指导教师 李 长 松 _
姓名 专业班级 计算机0902 学号 _
一、实验目的
1、复习不同的二维坐标变换公式。
2、掌握二维坐标变换公式的使用方法。
3、对二维坐标组合变换的灵活运用。
二、实验要求
1、在屏幕上绘制出较简单的几何图形。
2、 对1的图形进行平移变换,绘制出变换后的几何图形,并在下边标注出实施x,y各多少的平称坐标变换。
3、对1的图形进行旋转变换,绘制出变换后的几何图形,并在下边标注出实施多少度的旋转坐标变换。
4、对1的图形进行对称变换,绘制出变换后的几何图形,并在下边标注出实施对什么坐标进行的对称变换。
5、对1的图形进行错切变换,绘制出变换后的几何图形,并在下边标注出实施对何种坐标进行的错切变换。
6、对1的图形进行比例变换,绘制出变换后的几何图形,并在下边标注出实施的多少比例坐标变换。
7、为了进行比较,适当选择坐标,可将原图(变换前)及经过不同变换后的图形绘制在同一个屏幕上,设置不同的线形或颜色加以区分各种变换。
三、关键算法及实现原理
1、二维图形的变换实际上是一个变换矩阵,平面图形是由若干个二维点(xi,yi)组成,经过变换后的二维点(x’i, y’i),其变换公式为:
对应于不同的变换,都是用矩阵乘法来计算坐标,只需改变变换矩阵即可。因此对每一种坐标变换编成一个子程序。
2、编程时的技巧
用数组将二维图形的特征坐标点(顶点)保存,将由特征坐标点(顶点)绘制出二维图形的命令编一个绘图子程序,调用绘图子程序绘制出变换以前的图形,根据不同的两维几何变换,选用相应二维坐标变换公式(调用相应的子程序)将二维坐标进行坐标变换;再调用绘图子程序将变换后的坐标值在屏幕上绘制变换后的几何将图形,可选用不同的颜来区分各种不同几何变换的图形。
四、程序调试中的问题
Turbo C2.0环境不是太熟悉,经反复的练习后才得以灵活运用!
在调试程序中,发现图像显示的不合要求,计算发现多是参数算错,后经修改,好了一点。
从基本的几何问题入手,根据实际的变换过程编写程序。其中遇到了不少问题,比如,在求关于直线的对称时,最开始由于对称变换的变换矩阵出现了错误,使得最后出现了非预期的结果。最后通过检查,才发现了这个问题。
五、程序运行结果或数据
?Matlab命令如下:x=-2:0.1:2;y=-2:0.1:2;[X,Y]=meshgrid(x,y);%[X,Y,Z]=peaks;Z=X.*Y;subplot(1,2,1)contour(X,Y,Z)title(二维等高线)subplot(1,2,2)contour3(Z,30)title(‘三维等高线’)
六、实验收获及体会
通过本次试验,我基本掌握了二维几何变换的方法。
从基本的几何问题入手,根据实际的变换过程编写程序。其中遇到了不少问题,比如,在求关于直线的对称时,最开始由于对称变换的变换矩阵出现了错误,使得最后出现了非预期的结果。最后通过检查,才发现了这个问题。
3、二维几何变换有着广泛的应用,使得数学的基本知识在计算机上得到了实现。
七、参考源程序(可附页)
#includegraphics.h
#includeconio.h
#includedos.h
#includemath.h
double xmax=639.0, ymax=399.0;
double f[3][3],xx,yy;
int scx(double xj)
{
int x;
x=(int)(xj+xmax/2);
return(x);
}
int scy(double yj)
{
int y;
y=ymax-(int)(yj+ymax/2);
return(y);
}
void parallel(double dx,double dy)
{
f[0][0]=1.0;f[0][1]=0.0;f[0][2]=0.0;
f[1][0]=0.0;f[1][1]=1.0;f[1][2]=0.0;
f[2][0]=dx; f[2][1]=dy; f[2][2]=1.0;
}
void scale(double
显示全部