当前位置:文档之家› 计算机图形学-图形的几何变换

计算机图形学-图形的几何变换

计算机图形学-图形的几何变换
计算机图形学-图形的几何变换

贵州大学实验报告

学院:计算机科学与技术专业:软件工程班级:软件132 姓名常伟学号1308060226 实验地点一教704 实验时间2016.5.9 指导教师李智实验成绩

实验项目名称试验四、图形的几何变换

实验目的1.掌握矢量运算。

2.熟练使用齐次坐标。

3.掌握采用齐次坐标进行几何变换。

实验要求1.理解几何图形变换的原理,编程实现图形的几何变换。

2.编程界面友好,实现变换的所有方式,包括平移、缩放、旋转、对称、错切以及基本变换基础上的组合变换。

3.几何变换使用矩阵进行运算。

实验原理

二维齐次坐标变换的矩阵的形式是

?

?

?

?

?

?

?

?

?

?

i

h

g

f

e

d

c

b

a

这个矩阵的每一个元素都是有特殊含义的。其中,?

?

?

?

?

?

e

d

b

a

可以对图形进行缩放、旋

转、对称和错切等变换;?

?

?

?

?

?

f

c

是对图形进行平移变换;[]h

g是对图形作投影变换;[]i 则是对图形进行缩放变换。

下面给出几个基本变换的矩阵运算。

1.平移变换

?

?

?

?

?

?

?

?

?

?

=

?

?

?

?

?

?

?

?

?

?

+

+

=

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

=

?

?

?

?

?

?

?

?

?

?

?

?

1

)

,

(

1

1

1

1

1

1

'

'

y

x

T

y

x

y

x

t

t

t

t

t

t

y

x

y

x

y

x

y

x

2.缩放变换

?

?

?

?

?

?

?

?

?

?

=

?

?

?

?

?

?

?

?

?

?

?

?

=

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

=

?

?

?

?

?

?

?

?

?

?

1

)

,

(

1

1

1

1

'

'

y

x

s

s

S

y

s

x

s

y

x

s

s

y

x

y

x

y

x

y

x

3.旋转矩阵

?

?

?

?

?

?

?

?

?

?

=

?

?

?

?

?

?

?

?

?

?

+

-

=

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?-

=

?

?

?

?

?

?

?

?

?

?

1

)

(

1

cos

sin

sin

cos

1

1

cos

sin

sin

cos

1

'

'

y

x

R

y

x

y

x

y

x

y

x

θ

θ

θ

θ

θ

θ

θ

θ

θ

4.对称矩阵

?

?

?

?

?

?

?

?

?

?

+

+

=

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

=

?

?

?

?

?

?

?

?

?

?

1

1

1

1

'

'

ey

dx

by

ax

y

x

e

d

b

a

y

x

对称变换其实只是a、b、d、e取0、1等特殊值产生的一些特殊效果。

5.错切变换

?

?

?

?

?

?

?

?

?

?

+

+

=

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

=

?

?

?

?

?

?

?

?

?

?

1

1

1

1

1

1

'

'

y

dx

by

x

y

x

d

b

y

x

(1)当d=0时,图形的y坐标不变,x坐标随初值(x,y)及变换系数b作线性变化。(2)当b=0时,图形的x坐标不变,y坐标随初值(x,y)及变换系数d作线性变化。

实验步骤1.设计图形界面。本实验使用visual studio 2012 C#搭建窗口,设置相应的组件。如下图。

如图所示,combox此时显示的字符是“平移”,在其下面显示的是关于平移的操作组件。当选择combox的不同项时,其下面就显示对应的操作组件。

2.运行效果如下。

(1)平移

从图中可见,原图形的颜色为黄绿色,平移后的图形为黑色。(2)旋转

(3)对称

如图,这是原图形关于x轴对称后由对称后的图形关于原点对称得到的图

形。在界面中可看到一个text为“新变换”的checkbox,其作用是可以自由选择变换原图形或者变换变换后的图形。

(4)缩放

有图可知,此时的x、y的缩放比例都是0.5,也就是原图形的x和y都关于原点缩小为原来的一半。

(5)错切

此时y上的错切系数为0,即图形的y值不变,x的值随x上的错切系数变化。

(6)三角形的一顶点保持不变,另外两个顶点按缩放比例缩小,然后关于直线-2x+4y+3对称。

这是一个组合变换的问题,要使得三角形的一顶点保持不变,就要将该顶点移动到原点,缩放后再平移回去,然后再关于直线对称就行了。组合变换时,先作用的变换矩阵在右端,后作用的变换矩阵在左端。

(7)四边形以原点为中心,以15°为间隔旋转。

在程序中设置一个旋转增量,每变换一次,就加上旋转增量,就可得到上图的结果。

实验数据

由于代码篇幅过长,下面是代码的主要部分。

private void initMatrix() {

temp = new double[3][];

for (int i = 0; i < temp.Length; i++)

{

temp[i] = new double[3];

}

resetTemp(ref temp);

temp1 = new double[3][];

for (int i = 0; i < temp1.Length; i++)

{

temp1[i] = new double[3];

}

resetTemp(ref temp1);

//初始化平移矩阵

move = new double[3][];

for (int i = 0; i < move.Length; i++)

{

move[i] = new double[3];

}

for (int i = 0; i < move.Length; i++) {

for (int j = 0; j < move[i].Length; j++) {

if (i == j)

{

move[i][j] = 1;

}

else {

move[i][j] = 0;

}

}

}

//初始化缩放矩阵

zoom = new double[3][];

for (int i = 0; i < zoom.Length; i++)

{

zoom[i] = new double[3];

}

for (int i = 0; i < zoom.Length; i++)

{

for (int j = 0; j < zoom[i].Length; j++) {

if (i == j)

{

zoom[i][j] = 1;

}

else {

zoom[i][j] = 0;

}

}

}

//初始化旋转矩阵

rotate = new double[3][];

for (int i = 0; i < rotate.Length; i++)

{

rotate[i] = new double[3];

}

for (int i = 0; i < rotate.Length; i++)

{

for (int j = 0; j < rotate[i].Length; j++) {

if (i == j && i == 2)

{

rotate[i][j] = 1;

}

else {

rotate[i][j] = 0;

}

}

}

//初始化对称矩阵

symmetry = new double[3][];

for (int i = 0; i < symmetry.Length; i++)

{

symmetry[i] = new double[3];

}

for (int i = 0; i < symmetry.Length; i++)

{

for (int j = 0; j < symmetry[i].Length; j++) {

if (i == j)

{

symmetry[i][j] = 1;

}

else {

symmetry[i][j] = 0;

}

}

}

//初始化错切矩阵

shear = new double[3][];

for (int i = 0; i < shear.Length; i++)

{

shear[i] = new double[3];

}

for (int i = 0; i < shear.Length; i++)

{

for (int j = 0; j < shear[i].Length; j++) {

if (i == j)

{

shear[i][j] = 1;

}

else {

shear[i][j] = 0;

}

}

}

//初始化目标齐次坐标

target = new double[3][];

for (int i = 0; i < target.Length; i++)

{

target[i] = new double[1];

}

for (int i = 0; i < target.Length; i++)

{

for (int j = 0; j < target[i].Length; j++) {

if (i == 2 && j == 0)

{

target[i][j] = 1;

}

else {

target[i][j] = 0;

}

}

}

//初始化结果齐次坐标

result = new double[3][];

for (int i = 0; i < result.Length; i++)

{

result[i] = new double[1];

}

for (int i = 0; i < result.Length; i++)

{

for (int j = 0; j < result[i].Length; j++)

{

if (i == 2 && j == 0)

{

result[i][j] = 1;

}

else

{

result[i][j] = 0;

}

}

}

}

private void coordinate() {

Brush brush = new SolidBrush(Color.Black);

Pen pen = new Pen(brush,1);

//获取x轴

getGph().DrawLine(pen, new Point(0, panel1.Height / 2), new

Point(panel1.Width, panel1.Height / 2));

getGph().DrawLine(pen, new Point(panel1.Width, panel1.Height / 2), new Point(panel1.Width-10, panel1.Height / 2-5));

getGph().DrawLine(pen, new Point(panel1.Width, panel1.Height / 2), new Point(panel1.Width - 10, panel1.Height / 2 + 5));

//获取y轴

getGph().DrawLine(pen, new Point(panel1.Width / 2, 0), new

Point(panel1.Width / 2, panel1.Height));

getGph().DrawLine(pen, new Point(panel1.Width / 2, 0), new

Point(panel1.Width / 2-5, 10));

getGph().DrawLine(pen, new Point(panel1.Width / 2 , 0), new

Point(panel1.Width / 2+5,10 ));

//获取xoy

getGph().DrawString("O(0,0)", new Font("微软雅黑", 8), brush, new Point(panel1.Width/2-13, panel1.Height/2));

getGph().DrawString("X", new Font("微软雅黑", 8), brush, new

Point(panel1.Width-15, panel1.Height / 2+5));

getGph().DrawString("Y", new Font("微软雅黑", 8), brush, new

Point(panel1.Width/2+8,5));

//原点坐标

centerX = panel1.Width / 2;

centerY = panel1.Height / 2;

}

private void GetPolygon(List point,Color color) {

for (int i = 0; i

Brush brush = new SolidBrush(color);

Pen pen = new Pen(brush, 1);

Point st = point[i];

Point end = point[(i + 1) % point.Count];

st.X += centerX;

st.Y += centerY;

end.X += centerX;

end.Y += centerY;

getGph().DrawLine(pen,st,end);

Brush brushString = new SolidBrush(Color.Black);

getGph().DrawString("("+ (st.X-centerX) + ","+ (centerY-st.Y) + ")", new Font("微软雅黑", 6), brushString, new Point(st.X, st.Y - 12));

}

}

private void changePolygon(double[][] matrix) {

List newPoint=new List();//用来暂时存储要变换的目标链表

if (checkBox1.Checked)

{

for (int i = 0; i < point.Count; i++)

{

newPoint.Add(point[i]);

}

}

else {

if (chgPoint.Count == 0)

{

for (int i = 0; i < point.Count; i++)

{

newPoint.Add(point[i]);

}

}

else {

for (int i = 0; i < chgPoint.Count; i++) {

newPoint.Add(chgPoint[i]);

}

}

}

chgPoint.RemoveAll(clear);//准备接收再次变换后的顶点

for (int p = 0; p < newPoint.Count; p++)

{

target[0][0] = newPoint[p].X;

target[1][0] = newPoint[p].Y;

for (int i = 0; i < matrix.Length; i++)

{

for (int j = 0; j < matrix[i].Length; j++)

{

for (int k = 0; k < target[0].Length; k++)

{

result[i][k] += matrix[i][j] * target[j][k];

}

}

}

chgPoint.Add(new Point((int)result[0][0], (int)result[1][0]));

resetResultMatrix();

}

GetPolygon(chgPoint, Color.Black);

}

private void transformation(ref double[][] result,ref double[][] first,ref double[][] second) {//计算矩阵相乘

for (int i = 0; i < first.Length; i++)

{

for (int j = 0; j < first[i].Length; j++)

{

for (int k = 0; k < second[0].Length; k++)

{

result[i][k] += first[i][j] * second[j][k];

}

}

}

}

实验总结

一开始做几何图形变换的时候,嫌使用矩阵麻烦,于是自己动手计算,在程序中使用计算后的公式来完成几何变换。后来,在老师的要求下使用矩阵计算,才发现写矩阵时难,用矩阵时方便。通过此次试验,加深了对矩阵的理解,也对图形的几何变换有了一定程度的认识。

见签名:年月日

计算机图形学-图形的几何变换

贵州大学实验报告 学院:计算机科学与技术专业:软件工程班级:软件132 姓名常伟学号1308060226 实验地点一教704 实验时间2016.5.9 指导教师李智实验成绩 实验项目名称试验四、图形的几何变换 实验目的1.掌握矢量运算。 2.熟练使用齐次坐标。 3.掌握采用齐次坐标进行几何变换。 实验要求1.理解几何图形变换的原理,编程实现图形的几何变换。 2.编程界面友好,实现变换的所有方式,包括平移、缩放、旋转、对称、错切以及基本变换基础上的组合变换。 3.几何变换使用矩阵进行运算。

实验原理 二维齐次坐标变换的矩阵的形式是 ? ? ? ? ? ? ? ? ? ? i h g f e d c b a 这个矩阵的每一个元素都是有特殊含义的。其中,? ? ? ? ? ? e d b a 可以对图形进行缩放、旋 转、对称和错切等变换;? ? ? ? ? ? f c 是对图形进行平移变换;[]h g是对图形作投影变换;[]i 则是对图形进行缩放变换。 下面给出几个基本变换的矩阵运算。 1.平移变换 ? ? ? ? ? ? ? ? ? ? = ? ? ? ? ? ? ? ? ? ? + + = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = ? ? ? ? ? ? ? ? ? ? ? ? 1 ) , ( 1 1 1 1 1 1 ' ' y x T y x y x t t t t t t y x y x y x y x 2.缩放变换 ? ? ? ? ? ? ? ? ? ? = ? ? ? ? ? ? ? ? ? ? ? ? = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = ? ? ? ? ? ? ? ? ? ? 1 ) , ( 1 1 1 1 ' ' y x s s S y s x s y x s s y x y x y x y x 3.旋转矩阵 ? ? ? ? ? ? ? ? ? ? = ? ? ? ? ? ? ? ? ? ? + - = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?- = ? ? ? ? ? ? ? ? ? ? 1 ) ( 1 cos sin sin cos 1 1 cos sin sin cos 1 ' ' y x R y x y x y x y x θ θ θ θ θ θ θ θ θ 4.对称矩阵 ? ? ? ? ? ? ? ? ? ? + + = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = ? ? ? ? ? ? ? ? ? ? 1 1 1 1 ' ' ey dx by ax y x e d b a y x 对称变换其实只是a、b、d、e取0、1等特殊值产生的一些特殊效果。 5.错切变换 ? ? ? ? ? ? ? ? ? ? + + = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = ? ? ? ? ? ? ? ? ? ? 1 1 1 1 1 1 ' ' y dx by x y x d b y x

图形的几何变换

《计算机图形学》上机实习报告(一)——基本图形的生成 一、实习目的和要求 1、目的 深入学习三种基本几何变换的原理和方法,以及错切、镜像变换同上的类同性, 同时,在掌握基本几何变换的基础上理解组合变换的实现机制,掌握几何变换 的共同特点; 通过程序的编写和运行,学习基本几何变换在程序上的实现方法,这就要求掌 握结构体、一维数组的基本性质和使用方法; 进一步锻炼使用WIN-TC的熟练程度。 2、要求 实现平移变换、比例变换、旋转变换三种基本几何变换; 实现镜像变换、错切变换; 二、运行环境 本次上机在WIN-TC 中进行。 三、直线的生成——用Bresenham算法实现 1、算法基本原理 图形的几何变换一般是指对图形的几何信息经过变换后产生新的图形,图形几何变换既可以看作是坐标系不动而图形变动,变动后的图形在坐标系中的坐标值发生变化;出可以看作图形不动而坐标系变动,变动后的图形在新坐标系下具有新的坐标值。这两种情况本质上都是一样的,都是图形由新的坐标值表示,因此是新产生的图形。图形几何变换包括比例变换、对称变换、错切变换、旋转变换、平移变换及其复合变换。图形上所有的点在几何变换前后的坐标关系一般用解析几何方法可以求得,但这些几何关系用矩阵方法表示,运算更为方便。 图形基本几何变换是指比例变换、对称变换、错切变换、旋转变换和平移变换等。变换通过矩阵运算均可以表示为表示几何图形的点阵的一维矩阵和表示变换的三维矩阵相乘的形式,即P’=P·T,具体如下: 平移变换

比例变换 旋转变换 对称变换 对称于x轴对称于y轴对称于原点 对称于y=x 对称于y=-x 错切变换 沿x轴方向关于y的错切 沿y轴方向关于x的错切 2、对程序中变量的说明 3、源程序 4、运行结果 5、个人总结

计算机图形学总结

第一章绪论 计算机图形学的基本概念 计算机图形学:是研究怎样用数字计算机生成、处理和显示图形的一门学科。 图形:计算机图形学的研究对象。 构成图形的要素:几何要素——几何属性(点、线、面、体) 非几何要素——视觉属性(明暗、灰度、色彩、纹理、透明性、线型、线宽) 表示图形的方法:点阵表示;参数表示 研究内容 计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法,构成了计算机图形学的主要研究内容。 图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法,以及科学计算可视化、计算机动画、自然景物仿真、虚拟现实等。 计算机图形学的应用 图形用户界面;计算机辅助设计与制造(CAD/CAM);4 科学计算的可视化:CT; 真实感图形实时绘制与自然景物仿真;地理信息系统(GIS);Virtual Reality(虚拟现实、灵境);事务和商务数据的图形显示;地形地貌和自然资源的图形显示 过程控制及系统环境模拟;电子出版及办公自动化;计算机动画及广

告 计算机艺术;科学计算的可视化;工业模拟;计算机辅助教学 当前研究热点: 1.真实感图形实时绘制 2.野外自然景物的模拟3 与计算机网络技术的紧密结合 4 计算机动画 5 用户接口 6 计算机艺术 7 并行图形处理 所熟悉的图形软件包 图形软件的标准 GKS (Graphics Kernel System) (第一个官方标准,1977) PHIGS(Programmer’s Herarchical Iuteractive Graphics system) 一些非官方图形软件,广泛应用于工业界,成为事实上的标准 DirectX (MS) Xlib(X-Window系统) OpenGL(SGI) Adobe公司Postscript CAGD(Computer Aided Geometric Design) 图形系统的功能1.计算功能2.存储功能3.对话功能4.输入功能5.输出功能 图形输入设备 1 键盘和鼠标 2 跟踪球和空间球 3 光笔 4 数字化仪 5 触摸板 6 扫描仪

2 图形与几何教学设计

1. 在认识图形的基础上引导学生动手操作,折一折,画一画,剪一剪,培养学生的创新意识和能力。 2. 学会测量和估测物体的长度,培养学生的思维能力和空间想象能力。 3. 感受数学与生活的紧密联系,培养学生喜爱数学的情感。 重点:学会估测物体的长度。 难点:培养学生的创新意识和能力。 课件。 师:同学们,今天我们要复习整理的内容与我们的日常生活非常密切,首先想一想在“图形与几何”部分我们学习了哪些知识。 学生可能会说: ·我们学会了测量。 ·我认识了长度单位厘米和米,知道了1米=100厘米。 ·我还学会了剪出能够沿着一条线完全重合的图形。 ·我知道了平移和旋转现象。 …… 师:同学们说得很具体,只要你留心观察、认真学习,相信你会有更多新的发现。 【设计意图:引导学生回顾要整理复习的相关知识点,从而使学生形成对这部分内容的感性认识,能在头脑中呈现相关的表象,逐步构建知识系统。】 1. 教材第98页第1题。 师:我们学了哪些长度单位? 生:我们学了两个常用的长度单位——“厘米”和“米”。 师:找一找,生活中有哪些物品的长度大约是1厘米?有哪些物品的长度大约是1米? 生1:我拇指的指甲盖长度大约是1厘米。

生2:我们的课桌长度大约是1米。 …… 只要学生举出的事例正确就给予表扬鼓励。 师:关于“厘米”和“米”,你还知道什么呢? 生:我知道1米=100厘米。 师:说得非常好,大家一起说一遍,看谁记得最好。 2. 教材第98页第2题。 师:说一说测量时应注意什么。 生:测量时要注意把尺子的0刻度与物体的一端对齐,物体的另一端到尺子的什么刻度,读出来就是物体的长度。 师:你能说出下面物体的长各是多少厘米吗? 课件出示:教材第98页第2题。 生:最上面的铅笔长5厘米,中间的一支长4厘米,最下面的回形针长2厘米。 师:说得很正确,注意我们测量物体的长度时,就应该像图中这样与0刻度对齐。 3. 教材第98页第3题。 师:说一说在生活中可以用什么方法对长度进行估计。 生:我可以把要估计的物品的长度与1厘米或1米比一比。 【设计意图:在对相关知识点进行复习整理后,趁热打铁进行针对性的巩固训练,及时检查学生的掌握情况,从而确定下一步教学内容。】 师:同学们,今天我们复习了“图形与几何”,咱们这学期的内容到这就结束了,但是知识的学习与应用是无止境的,在今后的生活和学习中,只要你们努力,相信就能掌握更多的知识。

计算机图形学教程课后习题参考答案.

第一章 1、试述计算机图形学研究的基本内容? 答:见课本P5-6页的1.1.4节。 2、计算机图形学、图形处理与模式识别本质区别是什么?请各举一例说明。 答:计算机图形学是研究根据给定的描述,用计算机生成相应的图形、图像,且所生成的图形、图像可以显示屏幕上、硬拷贝输出或作为数据集存在计算机中的学科。计算机图形学研究的是从数据描述到图形生成的过程。例如计算机动画制作。 图形处理是利用计算机对原来存在物体的映像进行分析处理,然后再现图像。例如工业中的射线探伤。 模式识别是指计算机对图形信息进行识别和分析描述,是从图形(图像)到描述的表达过程。例如邮件分捡设备扫描信件上手写的邮政编码,并将编码用图像复原成数字。 3、计算机图形学与CAD、CAM技术关系如何? 答:见课本P4-5页的1.1.3节。 4、举3个例子说明计算机图形学的应用。 答:①事务管理中的交互绘图 应用图形学最多的领域之一是绘制事务管理中的各种图形。通过从简明的形式呈现出数据的模型和趋势以增加对复杂现象的理解,并促使决策的制定。 ②地理信息系统 地理信息系统是建立在地理图形基础上的信息管理系统。利用计算机图形生成技术可以绘制地理的、地质的以及其它自然现象的高精度勘探、测量图形。 ③计算机动画 用图形学的方法产生动画片,其形象逼真、生动,轻而易举地解决了人工绘图时难以解决的问题,大大提高了工作效率。 5、计算机绘图有哪些特点? 答:见课本P8页的1.3.1节。 6、计算机生成图形的方法有哪些? 答:计算机生成图形的方法有两种:矢量法和描点法。 ①矢量法:在显示屏上先给定一系列坐标点,然后控制电子束在屏幕上按一定的顺序扫描,逐个“点亮”临近两点间的短矢量,从而得到一条近似的曲线。尽管显示器产生的只是一些短直线的线段,但当直线段很短时,连成的曲线看起来还是光滑的。 ②描点法:把显示屏幕分成有限个可发亮的离散点,每个离散点叫做一个像素,屏幕上由像素点组成的阵列称为光栅,曲线的绘制过程就是将该曲线在光栅上经过的那些像素点串接起来,使它们发亮,所显示的每一曲线都是由一定大小的像素点组成的。当像素点具有多种颜色或多种灰度等级时,就可以显示彩色图形或具有不同灰度的图形。 7、当前计算机图形学研究的课题有哪些? 答:见课本P10-11页的1.4节。

计算机图形学--图形几何变换实现

实验五 图形几何变换的实现 班级:信计二班 学号: :解川 分数: 一、实验目的 为了掌握理解二维、三维的数学知识、变换原理、变换种类、变换方法;进一步理解采用齐次坐标进行二维、三维变换的必要性;利用VC++语言实现二维、三维图形的基本变换与复合变换。 二、实验容 (1) 理解采用齐次坐标进行图形变换的必要性——变换的连续性,使复合变换 得以实现。 (2) 掌握二维、三维图形基本变换的原理及数学公式。 (3) 利用VC++语言实现二维、三维图形的基本变换、复合变换,在评不上显 示变换过程或变换结果。 三、实验步骤 (1) 预习教材关于二维、三维图形变换的原理与方法。 (2) 使用VC++语言实现某一种或几种基本变换。 (3) 调试、编译、运行程序。 四、原理分析 源程序分别实现了对二维图形进行的平移变换—基本变换;对三维图形进行的绕某一个坐标轴旋转变换以及相对于立方体中心的比例变换—复合变换。 三维几何变换: (1) 比例变换: []1111z y x =[]1z y x T 3D =[]1z y x ????? ?? ?? ???s n m l r j i h q f e d p c b q 局部比例变换: s T =? ? ??? ???? ???1000000000000j e a 其中a 、b 、j 分别为在x 、y 、z 方向的比例系数。

整体比例变换: s T =? ? ??? ???? ???s 000010000100001其中s 为在xyz 方向的等比例系数。S>1时,整体缩小;s<1时,整体放大。 (2) 旋转变换: 旋转变换的角度方向为(沿坐标轴的反方向看去,各轴按逆时针方向旋转) 绕z 轴旋转: RZ T =?? ??? ???? ???-100 010000cos sin 00sin cos θθθθ 绕x 轴旋转: RX T =??????? ?? ???-10 00 0cos sin 00sin cos 000 01 θθθθ 绕y 轴旋转: RY T =????? ???? ???-10 0cos 0sin 00100sin 0cos θθθθ 程序代码: /*三维图形(立方体)旋转变换、比例变换*/ #include #include #include #include #include #include #define ZOOM_IN 0.9 #define ZOOM_OUT 1.1

西安电子科技大学计算机图形学重点总结,缩印必备!

反走样:在光栅显示器上显示图形时,直线段或图形边界或多或少会呈锯齿状。原因是图形信号是连续的,而在光栅显示系统中,用来表示图形的却是一个个离散的象素。这种用离散量表示连续量引起的失真现象称之为走样;用于减少或消除这种效果的技术称为反走样 反走样方法主要有:提高分辨率、区域采样和加权区域采样 提高分辨率:把显示器分辨率提高一倍,锯齿宽度也减小了一倍,所以显示出的直线段看起来就平直光滑了一些。这种反走样方法是以4倍的存储器代价和扫描转换时间获得的。因此,增加分辨率虽然简单,但是不经济的方法,而且它也只能减轻而不能消除锯齿问题。 区域采样方法:假定每个象素是一个具有一定面积的小区域,将直线段看作具有一定宽度的狭长矩形。当直线段与象素有交时,求出两者相交区域的面积,然后根据相交区域面积的大小确定该象素的亮度值。 加权区域采样:相交区域对象素亮度的贡献依赖于该区域与象素中心的距离。当直线经过该象素时,该象素的亮度F是在两者相交区域A′上对滤波器进行积分的积分值 刚体:平移和旋转的组合,保持线段的长度,保持角的大小,图形不变形,为刚体变化 仿射:旋转、平移、缩放的组合为仿射变换,平行边仍然平行,错切变换也为仿射变换 较高次数逼近的三种方法:1将y和z直接表示成x的显函数即y=f(x) z=g(x)2用一个形如f(x,y,z)=0的隐式方程的解来表示曲线3曲线的参数表示 前两方法缺点:1由一个x值不能得到多个y值;这一定义不是旋转不变的;描述具有与坐标轴垂直的切线的曲线是困难的2给定方程的解可能更多;曲线段做链接时,很难确定他们的切线方向在连接点上是否相等 参数表示为什么要选择三做参数:1低于三次的函数控制曲线形状时不够灵活,高于三次的曲线会增加不必要的摆动其增加计算量2三次参数曲线是三维空间中次数最低的非平面曲线3定义高次曲线需要更多条件,这样在交互生成时会造成曲线的摆动而难以控制 G0连续:两条曲线段拼接成一条曲线 G1连续:两条曲线段拼接点处切向量方向相同。若相等(方向、大小)-C1 Gn连续:两条曲线段拼接点处切向量的阶导数方向相同。n阶导数相等-Cn B样条曲线优势:1四点加权求和,调和函数非负且和为1,具有凸壳特性2可证明Qi和Qi+1在连接点处连续3曲线段三次函数,所以整个曲线具有连续4凸壳的对曲线裁剪有用 中点生成算法: TBRL中点生成算法:

计算机图形学心得体会

计算机图形学心得体会 姓名: 学号: 201203284 班级: 计科11202 序号: 31 院系: 计算机科学学院

通过一个学期的学习,经过老师细心的讲解,我对图形学这门课有了基础的认识,从您的课上我学到了不少知识,基本上对图形学有了一个大体的认识。上课的时候,您的PPT做的栩栩如生,创意新颖的FLASH就吸引了我的眼球,再加上您那详细生动的讲解,就让我对这门课产生了浓厚的兴趣,随着一节一节课的教学,您的讲课更加深深地吸引了我,并且随着对这门课越来越深入的了解更促使我产生了学好这门的欲望。您教会了我们怎们做基本知识,还教了我们不少的算法。听您的课可以说是听得津津有味。以下就是我对计算机图形学这门课的认识。 一、图形通常由点、线、面、体等几何元素和灰度、色彩、线型、线宽等非几何属性组成。从处理技术上来看图形主要分为两类一类是基于线条信息表示的如工程图、等高线地图、曲面的线框图等另一类是明暗图也就是通常所说的真实感图形。计算机图形学一个主要的目的就是要利用计算机产生令人赏心悦目的真实感图形。为此必须建立图形所描述的场景的几何表示再用某种光照模型计算在假想的光源、纹理、材质属性下的光照明效果。所以计算机图形学与另一门学科计算机辅助几何设计有着密切的关系。事实上图形学也把可以表示几何场景的曲线曲面造型技术和实体造型技术作为其主要的研究内容。同时真实感图形计算的结果是以数字图像的方式提供的计算机图形学也就和图像处理有着密切的关系。 二、计算机图形学的研究内容非常广泛如图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法、非真实感绘制以及科学计算可视化、计算机动画、自然景物仿真、虚拟现实等。1990年的第11届亚洲运动会上首次采用了计算机三维动画技术来制作有关的电视节目片头。继而以3D Studio 为代表的三维动画微机软什和以Photostyler、Photoshop等为代表的微机二维平面设计软件的普及对我国计算机动画技术的应用起到了推波助谰的作用。计算机动画的应用领域十分宽广除了用来制作影视作品外在科学研究、视觉模拟、电子游戏、工业设计、教学训练、写真仿真、过程控制、平面绘画、机械设计等许多方面都有重要应用如军事战术模拟。 三、科学计算可视化它将科学计算过程中及计算结果的数据转换为几何

计算机图形学第二版课后习题答案

第一章绪论 概念:计算机图形学、图形、图像、点阵法、参数法、 图形的几何要素、非几何要素、数字图像处理; 计算机图形学和计算机视觉的概念及三者之间的关系; 计算机图形系统的功能、计算机图形系统的总体结构。 第二章图形设备 图形输入设备:有哪些。 图形显示设备:CRT的结构、原理和工作方式。 彩色CRT:结构、原理。 随机扫描和光栅扫描的图形显示器的结构和工作原理。 图形显示子系统:分辨率、像素与帧缓存、颜色查找表等基本概念,分辨率的计算 第三章交互式技术 什么是输入模式的问题,有哪几种输入模式。 第四章图形的表示与数据结构 自学,建议至少阅读一遍 第五章基本图形生成算法 概念:点阵字符和矢量字符; 直线和圆的扫描转换算法; 多边形的扫描转换:有效边表算法; 区域填充:4/8连通的边界/泛填充算法;

内外测试:奇偶规则,非零环绕数规则; 反走样:反走样和走样的概念,过取样和区域取样。 5.1.2 中点 Bresenham 算法(P109) 5.1.2 改进 Bresenham 算法(P112) 习题答案

习题5(P144) 5.3 试用中点Bresenham算法画直线段的原理推导斜率为负且大于1的直线段绘制过程(要求写清原理、误差函数、递推公式及最终画图过程)。(P111) 解: k<=-1 |△y|/|△x|>=1 y为最大位移方向 故有 构造判别式: 推导d各种情况的方法(设理想直线与y=yi+1的交点为Q): 所以有: y Q-kx Q-b=0 且y M=y Q d=f(x M-kx M-b-(y Q-kx Q-b)=k(x Q-x M) 所以,当k<0, d>0时,M点在Q点右侧(Q在M左),取左点 P l(x i-1,y i+1)。 d<0时,M点在Q点左侧(Q在M右),取右点 Pr(x i,y i+1)。 d=0时,M点与Q点重合(Q在M点),约定取右点 Pr(x i,y i+1) 。 所以有 递推公式的推导: d2=f(x i-1.5,y i+2) 当d>0时, d2=y i+2-k(x i-1.5)-b 增量为1+k =d1+1+k

图像的几何变换的两种实现(旋转、平移、放大、缩小)

面向对象程序设计 学号:2 学生所在学院:信息工程学院 学生姓名:邵丽群 任课教师:熊邦书 教师所在学院:信息工程学院

2013级 实现图像的几何变换 电子信息工程 信息工程学院 摘要:几何变换是最常见的图像处理手段,通过对变形的图像进行几何校正,可以得出准确的图像。常用的几何变换功能包括图像的平移、图像的镜像变换、图像的转置、图像的缩放、图像的旋转等等。目前数字图像处理的应用越来越广泛,已经渗透到工业、航空航天、军事等各个领域,在国民经济中发挥越来越大的作用。作为数字图像处理的一个重要部分,本文接受的工作是如何Visual C++编程工具设计一个完整的应用程序,实现经典的图像几何变换功能。程序大概分为两大部分:读写BMP图像,和数字图像的几何变换。即首先用Visual C++创建一个单文档应用程序框架,在实现任意BMP图像的读写,打印,以及剪贴板操作的基础上,完成经典的图像几何变换功能。图像几何变换的Visual C++编程实现,为校内课题的实现提供了一个实例。 关键字:图像处理;几何变换(图像的平移、缩放、转置、旋转和镜像变换);BMP图像;Visual C++

一、引言 图像几何变换是指用数学建模的方法来描述图像位置、大小、形状等变化的方法。在实际场景拍摄到的一幅图像,如果画面过大或过小,都需要进行缩小或放大。如果拍摄时景物与摄像头不成相互平行关系的时候,会发生一些几何畸变,例如会把一个正方形拍摄成一个梯形等。这就需要进行一定的畸变校正。在进行目标物的匹配时,需要对图像进行旋转、平移等处理。在进行三维景物显示时,需要进行三维到二维平面的投影建模。因此,图像几何变换是图像处理及分析的基础。 图像几何变换是计算机图像处理领域中的一个重要组成部分,也是值得深讨的一个重要课题。在图像几何变换中主要包括图像的放缩、图像的旋转、图像的移动、图像的镜像、图像的块操作等内容,几何变换不改变图像的像素值,只改变像素所在的几何位置。从广义上说,图像是自然界景物的客观反映,是人类认识世界和人类本身的重要源泉。图像对我们并不陌生。我们生活在一个信息时代,科学研究和统计表明,人类从外界获得的信息约有75%来自视觉系统,也就是从图像中获得的。所以对数字图像的处理便显得尤为重要了。 本文主要深讨了图像的几何变换(主要包括图像的平移、转置、缩放、旋转、镜像等)理论,并在此基础上用Visual C++实现的过程。 1.3.2研究方法 方法一: 利用Windows 本身就提供了一个API函数SetWorldTransForm来实现图片旋转、位移及其他变形,这个函数是对一个设备上下文DC进行操作,通过坐标转换来实现各种功能的。 方法二: 通过图像进行平移、旋转、转置、镜像、缩放后重新计算各点新像素完成几何变换。自定义一个图像处理的Cdibapi类,把一般处理图像时要用到的函数实现封装在这个类中,该类用于实现DIB对象的绘制,DIB对象调色板的创建,DIB对象的读取与存储,图像线性变换,图像灰度拉伸等。然后把在视类中实现图像平移,图像镜像,图像转置,图像缩放及图像旋转的函数调用和实现。

计算机图形学必考知识点

Phong Lighting 该模型计算效率高、与物理事实足够接近。Phong模型利用4个向量计算表面任一点的颜色值,考虑了光线和材质之间的三种相互作用:环境光反射、漫反射和镜面反射。Phong模型使用公式:I s=K s L s cosαΦα:高光系数。计算方面的优势:把r和v归一化为单位向量,利用点积计算镜面反射分量:I s=K s L s max((r,v)α,0),还可增加距离衰减因子。 在Gouraud着色这种明暗绘制方法中,对公用一个顶点的多边形的法向量取平均值,把归一化的平均值定义为该顶点的法向量,Gouraud着色对顶点的明暗值进行插值。Phong着色是在多边形内对法向量进行插值。Phong着色要求把光照模型应用到每个片元上,也被称为片元的着色。 颜色模型RGB XYZ HSV RGB:RGB颜色模式已经成为现代图形系统的标准,使用RGB加色模型的RGB三原色系统中,红绿蓝图像在概念上有各自的缓存,每个像素都分别有三个分量。任意色光F都可表示为F=r [ R ] + g [ G ] + b [ B ]。RGB颜色立方体中沿着一个坐标轴方向的距离代表了颜色中相应原色的分量,原点(黑)到体对角线顶点(白)为不同亮度的灰色 XYZ:在RGB 系统基础上,改用三个假想的原色X、Y、Z建立了一个新的色度系统, 将它匹配等能光谱的三刺激值,该系统称为视场XYZ色度系统,在XYZ空间中不能直观地评价颜色。 HSV是一种将RGB中的点在圆柱坐标系中的表示法,H色相S饱和度V明度,中心轴为灰色底黑顶白,绕轴角度为H,到该轴距离为S,沿轴高度为S。 RGB优点:笛卡尔坐标系,线性,基于硬件(易转换),基于三刺激值,缺点:难以指定命名颜色,不能覆盖所有颜色范围,不一致。 HSV优点:易于转换成RGB,直观指定颜色,’缺点:非线性,不能覆盖所有颜色范围,不一致 XYZ:覆盖所有颜色范围,基于人眼的三刺激值,线性,包含所有空间,缺点:不一致 交互式计算机程序员模型 (应用模型<->应用程序<->图形库)->(图形系统<->显示屏).应用程序和图形系统之间的接口可以通过图形库的一组函数来指定,这和接口的规范称为应用程序编程人员接口(API),软件驱动程序负责解释API的输出并把这些数据转换为能被特定硬件识别的形式。API提供的功能应该同程序员用来确定图像的概念模型相匹配。建立复杂的交互式模型,首先要从基本对象开始。良好的交互式程序需包含下述特性:平滑的显示效果。使用交互设备控制屏幕上图像的显示。能使用各种方法输入信息和显示信息。界面友好易于使用和学习。对用户的操作具有反馈功能。对用户的误操作具有容忍性。Opengl并不直接支持交互,窗口和输入函数并没有包含在API中。 简单光线跟踪、迭代光线跟踪 光线跟踪是一种真实感地显示物体的方法,该方法由Appel在1968年提出。光线跟踪方法沿着到达视点的光线的相反方向跟踪,经过屏幕上每一象素,找出与视线所交的物体表面点P0,并继续跟踪,找出影响P0点光强的所有的光源,从而算出P0点上精确的光照强度。光线跟踪器最适合于绘制具有高反射属性表面的场景。优缺点:原理简单,便于实现,能生成各种逼真的视觉效果,但计算量开销大,终止条件:光线与光源相交光线超出视线范围,达到最大递归层次。一般有三种:1)相交表面为理想漫射面,跟踪结束。2)相交表面为理想镜面,光线沿镜面反射方向继续跟踪。3)相交表面为规则透射面,光线沿规则透射方向继续跟踪。 描述光线跟踪简单方法是递归,即通过一个递归函数跟踪一条光线,其反射光想和折射光线再调用此函数本身,递归函数用来跟踪一条光线,该光线由一个点和一个方向确定,函数返回与光线相交的第一个对象表面的明暗值。递归函数会调用函数计算指定的光线与最近对象表面的交点位置。 图形学算法加速技术BVH, GRID, BSP, OCTree 加速技术:判定光线与场景中景物表面的相对位置关系,避免光线与实际不相交的景物表面的求交运算。加速器技术分为以下两种:Bounding Volume Hierarchy 简写BVH,即包围盒层次技术,是一种基于“物体”的场景管理技术,广泛应用于碰撞检测、射线相交测试之类的场合。BVH的数据结构其实就是一棵二叉树(Binary Tree)。它有两种节点(Node)类型:Interior Node 和Leaf Node。前者也是非叶子节点,即如果一个Node不是Leaf Node,它必定是Interior Node。Leaf Node 是最终存放物体/们的地方,而Interior Node存放着代表该划分(Partition)的包围盒信息,下面还有两个子树有待遍历。使用BVH需要考虑两个阶段的工作:构建(Build)和遍历(Traversal)。另一种是景物空间分割技术,包括BSP tree,KD tree Octree Grid BSP:二叉空间区分树 OCTree:划分二维平面空间无限四等分 Z-buffer算法 算法描述:1、帧缓冲器中的颜色设置为背景颜色2、z缓冲器中的z值设置成最小值(离视点最远)3、以任意顺序扫描各多边形a) 对于多边形中的每一个采样点,计算其深度值z(x,y) b) 比较z(x, y)与z缓冲器中已有的值zbuffer(x,y)如果z(x, y) >zbuffer(x, y),那么计算该像素(x, y)的光亮值属性并写入帧缓冲器更新z缓冲器zbuffer(x, y)=z(x, y) Z-buffer算法是使用广泛的隐藏面消除算法思想为保留每条投影线从COP到已绘制最近点距离,在投影后绘制多边形时更新这个信息。存储必要的深度信息放在Z缓存中,深度大于Z缓存中已有的深度值,对应投影线上已绘制的多边形距离观察者更近,故忽略该当前多边形颜色,深度小于Z缓存中的已有深度值,用这个多边形的颜色替换缓存中的颜色,并更新Z缓存的深度值。 void zBuffer() {int x, y; for (y = 0; y < YMAX; y++) for (x = 0; x < XMAX; x++) { WritePixel (x, y, BACKGROUND_VALUE); WriteZ (x, y, 1);} for each polygon { for each pixel in polygon’s projection { //plane equation doubl pz = Z-value at pixel (x, y); if (pz < ReadZ (x, y)) { // New point is closer to front of view WritePixel (x, y, color at pixel (x, y)) WriteZ (x, y, pz);}}}} 优点:算法复杂度只会随着场景的复杂度线性增加、无须排序、适合于并行实现 缺点:z缓冲器需要占用大量存储单元、深度采样与量化带来走样现象、难以处理透明物体 着色器编程方法vert. frag 着色器初始化:1、将着色器读入内存2、创建一个程序对象3、创建着色器对象4、把着色器对象绑定到程序对象5、编译着色器6、将所有的程序连接起来7、选择当前的程序对象8、把应用程序和着色器之间的uniform变量及attribute变量关联起来。 Vertex Shader:实现了一种通用的可编程方法操作顶点,输入主要有:1、属性、2、使用的常量数据3、被Uniforms使用的特殊类型4、顶点着色器编程源码。输入叫做varying变量。被使用在传统的基于顶点的操作,例如位移矩阵、计算光照方程、产生贴图坐标等。Fragment shader:计算每个像素的颜色和其他属性,实现了一种作用于片段的通用可编程方法,对光栅化阶段产生的每个片段进行操作。输入:Varying 变量、Uniforms-用于片元着色器的常量,Samples-用于呈现纹理、编程代码。输出:内建变量。 观察变换 建模变换是把对象从对象标架变换到世界标架 观察变换把世界坐标变换成照相机坐标。VC是与物理设备无关的,用于设置观察窗口观察和描述用户感兴趣的区域内部分对象,观察坐标系采用左手直角坐标系,可在用户坐标系中的任何位置、任何方向定义。其中有一坐标轴与观察方向重合同向并与观察平面垂直。观察变换是指将对象描述从世界坐标系变换到观察坐标系的过程。(1):平移观察坐标系的坐标原点,与世界坐标系的原点重合,(2):将x e,y e轴分别旋转(-θ)角与x w、y w轴重合。 规范化设备坐标系 规范化设备坐标系是与具体的物理设备无关的一种坐标系,用于定义视区,描述来自世界坐标系窗口内对象的图形。 光线与隐式表面求交 将一个对象表面定义为f(x,y,z)=f(p)=0,来自P0,方向为d的光线用参数的形式表示为P(t)=P0+td. 交点位置处参数t的值满足:f(P0+td)=0,若f是一个代数曲面,则f是形式为X i Y j Z k的多项式之和,求交就转化为寻求多项式所有根的问题,满足的情况一:二次曲面,情况二:品面求交,将光线方程带入平面方程:p*n+c=0可得到一个只需做一次除法的标量方程p=p0+td。可通过计算得到交点的参数t的值:t=(p0*n+c)/(n*d). 几何变换T R S矩阵表示 三维平移T 三维缩放S旋转绕z轴Rz( ) 100dx 010dy 001dz 0001 Sx000 0Sy00 00Sz0 0001 cos-sin00 sin cos00 0010 0001 θθ θθ 旋转绕x轴Rx(θ) 旋转绕y轴Ry(θ) 1000 0cos-sin0 0sin cos0 0001 θθ θθ cos0sin0 0100 -sin0cos0 0001 θθ θθ 曲线曲面 Bezier曲线性质:Bezier曲线的起点和终点分别是特征多边形的第一个顶点和最后一个顶点。曲线在起点和终点处的切线分别是特征多边形的第一条边和最后一条边,且切矢的模长分别为相应边长的n倍;(2)凸包性;(3)几何不变性(4)变差缩减性。端点插值。 均匀B样条曲线的性质包括:凸包性、局部性、B样条混合函数的权性、连续性、B样条多项式的次数不取决于控制函数。 G连续C连续 C0连续满足:C1连续满足: (1)(0) p(1)=(1)(0)(0) (1)(0) px qx py q qy pz qz == ???? ???? ???? ???? (1)(0) p'(1)=(1)'(0)(0) (1)(0) p x q x p y q q y p z q z == ???? ???? ???? ???? C0(G0)连续:曲线的三个分量在连接点必须对应相等 C1连续:参数方程和一阶导数都对应相等 G1连续:两曲线的切线向量成比例 三维空间中,曲线上某点的导数即是该点的切线,只要求两个曲线段连接点的导数成比例,不需要导 数相等,即p’(1)=aq’(0) 称为G1几何连续性。将该思想推广到高阶导数,就可得到C n和G n连续性。

计算机图形学课后习题答案

第三章习题答案 3.1 计算机图形系统的主要功能是什么? 答:一个计算机图形系统应具有计算、存储、输入、输出、交互等基本功能,它们相互协作,完成图形数据的处理过程。 1. 计算功能 计算功能包括: 1)图形的描述、分析和设计;2)图形的平移、旋转、投影、透视等几何变换; 3)曲线、曲面的生成;4)图形之间相互关系的检测等。 2. 存储功能 使用图形数据库可以存放各种图形的几何数据及图形之间的相互关系,并能快速方便地实现对图形的删除、增加、修改等操作。 3. 输入功能 通过图形输入设备可将基本的图形数据(如点、线等)和各种绘图命令输入到计算机中,从而构造更复杂的几何图形。 4. 输出功能 图形数据经过计算后可在显示器上显示当前的状态以及经过图形编辑后的结果,同时还能通过绘图仪、打印机等设备实现硬拷贝输出,以便长期保存。 5. 交互功能 设计人员可通过显示器或其他人机交互设备直接进行人机通信,对计算结果和图形利用定位、拾取等手段进行修改,同时对设计者或操作员输入的错误给以必要的提示和帮助。 3.2 阴极射线管由哪些部分组成?它们的功能分别是什么? 答:CRT主要由阴极、电平控制器(即控制极)、聚焦系统、加速系统、偏转系统和阳极荧光粉涂层组成,这六部分都在真空管内。 阴极(带负电荷)被灯丝加热后,发出电子并形成发散的电子云。这些电子被电子聚集透镜聚焦成很细的电子束,在带正高压的阳极(实际为与加速极连通的CRT屏幕内侧的石墨粉涂层,从高压入口引入阳极高电压)吸引下轰击荧光粉涂层,而形成亮点。亮点维持发光的时间一般为20~40mS。 电平控制器是用来控制电子束的强弱的,当加上正电压时,电子束就会大量通过,在屏幕上形成较亮的点,当控制电平加上负电压时,依据所加电压的大小,电子束被部分或全部阻截,通过的电子很少,屏幕上的点也就比较暗。所以改变阴极和 控制电平之间的电位差,就可调节电子 束的电流密度,改变所形成亮点的明暗 程度。 利用偏转系统(包括水平方向和 垂直方向的偏转板)可将电子束精确定 位在屏幕的任意位置上。只要根据图形 的几何坐标产生适当的水平和垂直偏转磁场(或水平和垂直偏转板静电场),图 2.2CRT原理图

计算机图形学 图形几何变换的实现

计算机图形学图形几何变换的实现

————————————————————————————————作者:————————————————————————————————日期:

实验五图形几何变换的实现 班级08信计2 学号89姓名徐阳分数 一、实验目的和要求: 1、掌握理解二维、三维变换的数学知识、变换原理、变换种类、变换方法;进一步理解采用齐次坐标进行二维、三维变换的必要性;利用Turboc实现二维、三维图形的基本变换和复合变换。 二、实验内容: 1、理解采用齐次坐标进行图形变换的必要性——变换的连续性,使复合变换得以实现。 2、掌握二维、三维图形基本变换(平移、缩放、对称、旋转、错切)的原理及数学公式。 3、利用Turboc实现二维、三维图形的基本变换、复合变换,在屏幕上显示变换过程或变换结果。 三、实验结果分析: 程序代码如下: /*二维图形(直线)平移变换*/ #include #include #include main() {int x0,y0,x1,y1,i,j; int a[3][3]; char key; for(i=0;i<3;i++) for(j=0;j<3;j++) a[i][j]=0; for(i=0;i<3;i++) a[i][i]=1; int graphdriver=DETECT; int graphmode=0; initgraph(&graphdriver,&graphmode," "); cleardevice(); x0=250;y0=120;x1=350;y1=220; line(x0,y0,x1,y1); for( ; ;) {outtextxy(100,400,"<-:left->:right^:up v:down Esc->exit"); key=getch();

计算机图形学复习课总结

绪论 1点阵法和参数法的概念。图形、图像的概念。 点阵法是用具有颜色信息的点阵来表示图形的一种方法,它强调图形由哪些点组成,并具有什么灰度或色彩。 参数法是以计算机中所记录图形的形状参数与属性参数来表示图形的一种方法。 通常把参数法描述的图形叫做图形(Graphics) 把点阵法描述的图形叫做图象(Image) 2 计算机图形学的概念? 计算机图形学是研究怎样用计算机表示、生成、处理和显示图形的一门学科。 3图形包括哪两方面的要素,试举例说明。 图形包括两方面的要素,其中有几何要素和非几何要素 1. 几何要素:点,线,面,体等; 2. 非几何要素:明暗,灰度,色彩等 4一个交互性的图形系统具有哪些功能? 5个功能:输入功能、存储功能、计算功能、输出功能和交互功能 5图形输出设备包括什么?常用的图形绘制设备有哪两种? 图形输出设备包括图形显示设备和图形绘制设备,常用的图形绘制设备有打印机和绘图仪。 6与计算机图形学相关的学科有哪些?各自研究的内容是什么?

计算机视觉:研究用计算机来模拟生物外显或宏观视觉功能的科学和技术图像处理:对图象进行各种加工以改善图象的视觉效果 C语言程序基础(课件中p17, p55-59,常用画图函数) 1已知画“王”的C语言程序(如下),要求改编一个画“田”字的程序,该字的字高和字宽均为50,字的左上角点坐标为(60, 80)。 #include "graphics.h" #include "conio.h" main() { int gdriver=DETECT,gmode; int x,y; initgraph(&gdriver,&gmode,“”); /*初始化图形系统*/ cleardevice(); /*清除图形屏幕*/ moveto(100,40); /*绝对移动光标*/ linerel(40,0); /*从当前位置按增量方式画线*/ x=getx(); y=gety(); moveto(x,y+20); linerel(-40,0); moverel(0,20); /* 以增量方式移动当前光标*/ linerel(40,0); moverel(-20,0); linerel(0,-40); getch(); closegraph(); /*关闭图形系统,返回文本模式*/ } 2画一个填充颜色的圆(画一个填充颜色的矩形,已知矩形的左下角(0,20),右上角坐标为(100,120)),圆心坐标(60,60),半径100,要求背景色为1号色(blue),圆的边界色为红色,填充色为Green,(函数:circle floodfill) #include "graphics.h"

《图形与几何》教案

《图形与几何》教案 教学目标 1、知识与技能 使学生全面掌握小学阶段所学的各种图形的特点及关系,能熟练的计算三角形、正方形、长方形、平行四边形、梯形的周长,和正方体、长方体、圆柱、圆锥的表面积、体积。 2、过程与方法 通过探索图形之间的关系,发挥空间想象能力,运用观察、分析、抽象、概括的方法,理解并能熟练运用相关公式。 3、情感态度与价值观 感受现实世界中抽象出几何图形的过程,感受图形世界的丰富多彩,激发对图形与几何的兴趣。 教学重点 复习所学的图形知识及相关的计算方法。 教学难点 平面图形与立体图形的联系,以及相关的计算。 教学过程 第一课时图形的认识 一、知识回顾 1、我们学过哪些图形?让同学把把学过的图形列出来,并进行归类。

2、找同学回答以上图形它们之间的关系。 等边三角形正方形长方体正方体 等腰三角形长方形圆柱圆锥三角形平行四边形立体图形 二、讲授课程 1、在PPT上放映立体图形及平面图形的图片,让同学们讨论立体图形与平面图形之间的联系(1)正方体的各个面都是什么图形?正方形; (2)长方体的各个面都是什么图形?长方形; (3)圆柱的各个面都是什么图形?上面跟底面是圆,侧面展开式是长方形; (4)圆锥的各个面都是什么图形?底面是圆,截是一个三角形; 2、回顾两条直线平行跟垂直的概念。 (1)平行:在同一个平面内不相交的两条直线叫做平行线,也可以说这两条直线互相平行; 直线a与直线b线平行。 (2)垂直:如果两条直线相交成直角,就说这两条直线互相垂直。 a 直线a与直线b线垂直。 3、角的复习 (1)锐角:大于0°,小于90°的角叫做锐角; (2)直角:等于90°的角叫做直角; (3)钝角:大于90°小于180°的角叫做钝角; (4)平角:等于180°的角叫做平角; (5)周角:等于360°的角叫做周角。 注意区分直线、平角、周角的不同,他们的表示方式。以下各角分别是什么角?

相关主题
文本预览
相关文档 最新文档