文档介绍:2021年图形学实验报告
2021年图形学实验报告
1 / 66
2021年图形学实验报告
计
算
机
图
形
学
实 验 指 导 书
学号:
姓名: 谢卉
试验一: 图形几何变换
试验课时: 4课时
试验类型: 验证
试验要求: 必修
一、 试验目
二维图形平移、 缩放、 旋转和投影变换(投影变换可在试验三中实现)等是最基础图形变换, 被广泛用于计算机图形学多种应用程序中, 本试验经过算法分析以及程序设计试验二维图形变换, 以了解变换实现方法。如可能也可进行裁剪设计。
二、 试验内容
掌握平移、 缩放、 旋转变换基础原理, 了解线段裁剪算法原理, 并经过程序设计实现上述变换。提议采取VC++实现OpenGL程序设计。
三、 试验原理、 方法和手段
图形平移
在屏幕上显示一个人或其它物体(如图1所表示), 用交互操作方法使其在屏幕上沿水平和垂直方向移动Tx和Ty, 则有
x’=x+Tx y’=y+Ty
其中: x与y为变换前图形中某一点坐标, x’和y’为变换后图形中该点坐标。其交互方法可先定义键值, 然后操作功效键使其移动。
图形缩放
在屏幕上显示一个帆船(使它生成在右下方), 使其相对于屏幕坐标原点缩小s倍(即x方向和y方向均缩小s倍)。则有:
2021年图形学实验报告
2021年图形学实验报告
3 / 66
2021年图形学实验报告
x’=x*s y’=y*s
注意: 有时图形缩放并不一定相对于原点, 而是事先确定一个参考位置。通常情况下, 参考点在图形左下角或中心。设参考点坐标为xf、 yf则有变换公式
x’=x*Sx+xf*(1-Sx)=xf+(x-xf)*Sx
y’=y*Sy+yf*(1-Sy)=yf+(y-yf)*Sy
式中x与y为变换前图形中某一点坐标, x’和y’为变换后图形中该点坐标。当Sx>1和Sy>1时为放大倍数, Sx<1和Sy<1时为缩小倍数(但Sx和Sy必需大于零)。
图形旋转
在屏幕上显示一个汽车, 依据自己确定旋转角度和旋转中心对图形进行旋转。旋转公式为
x’=xf+(x-xf)*cos(angle)-(y-yf)*sin(angle)
y’=yf+(y-yf)*cos(angle)+(x-xf)*sin(angle)
其中: xf,yf为围绕旋转中心点坐标。x,y为旋转前图形中某点坐标, x’和y’为旋转后图形中该点坐标。
裁剪
对一个三角形进行裁剪, 裁剪后图形应是一个封闭图形。可采取线段裁剪法, 其方法可用书上线段相交求点公式, 确定可见线段给予保留, 不在窗口线段则应舍弃。
2021年图形学实验报告
2021年图形学实验报告
3 / 66
2021年图形学实验报告
图1
四、 试验组织运行要求
本试验采取集中讲课形式, 每个同学独立完成上述试验要求。
五、 试验条件
每人一台计算机独立完成试验。
六、 试验步骤
将图形显示在初始位置。
对图形各点按变换表示式作坐标变换, 计算出各点变换后对应点坐标。
将原来图形抹去。
在新位置显示图形。
七、 程序代码
平移缩放
// : 定义控制台应用程序入口点。
//
2021年图形学实验报告
2021年图形学实验报告
4 / 66
2021年图形学实验报告
#include ""
#include "gl/"
#include ""
#include <>
float width,highth,angle;
void init (void)//画正方形
{
glClearColor (,, , );//背景颜色
glMatrixMode (GL_PROJECTION);// 投影
gluOrtho2D (, , , );//参数分别代表(左下角x坐标, 右上角x坐标, 左下角y坐标, 右上角y坐标)
}
void display (void)
{
2021年图形学实验报告
2021年图形学实验报告
5 / 66
2021年图形学实验报告
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (, , );//矩形颜色