二维图形几何变换.

合集下载

实验.四二维图形的基本几何变换

实验.四二维图形的基本几何变换

实验报告学院:计算机学号:姓名:实验四 二维图形的基本几何变换一、实验目的1.掌握二维图形基本的几何变换原理及变换矩阵; 2.掌握矩阵运算的程序设计。

二、实验内容实现二维图形的基本变换,包括平移、旋转、比例、对称变换。

三、实验环境硬件平台:PC运行环境: Windows 平台,Visual C++四、算法描述二维图形齐次坐标变换矩阵一般表达式 T = 这 3×3 矩阵中各元素功能一共可分成四块,即a 、b 、c 、d 四项用于图形的比例、对称、错切、旋转等基本变换; k 、m 用于图形的平移变换;p 、q 用于图形的透视变换; s 用于图形的全比例变换。

平移变换 旋转变化放缩变换五、实验过程5.1打开Visualc++6.0程序5.2新建一个C++项目⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡s m kq dc p b a ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡''1),(110010011y x t t T y x t t y x y x y x 记为⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡''1)(11000cos sin 0sin cos 1y x R y x y x θθθθθ记为⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡''1),(11000001y x s s S y x s s y x y x y x记为5.3单击完成,双击源文件里的二维图形几何变换View.cpp,出现下图5.5找到其中的OnDraw函数,并将其改成如下,使其实现了一条直线的平移。

void C二维图形几何变换View::OnDraw(CDC* pDC){C二维图形几何变换Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;// TODO: 在此处为本机数据添加绘制代码int a[3][3];int i,j;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 x0=80,x1=350,y0=120,y1=120;pDC->MoveTo(x1,y1);E:\c++6.0安装\MSDev98\MyProjects\pDC->LineTo(x0,y0);a[2][0]=80;//使直线在行方向上平移了80个单位a[2][1]=50;//使直线在列方向上平移了50个单位x0=x0*a[0][0]+y0*a[1][0]+a[2][0];y0=x0*a[0][1]+y0*a[1][1]+a[2][1];x1=x1*a[0][0]+y1*a[1][0]+a[2][0];y1=x1*a[0][1]+y1*a[1][1]+a[2][1];pDC->MoveTo(x1,y1);pDC->LineTo(x0,y0);}5.6单击运行程序并有如下结果5.7找到其中的OnDraw函数,并将其改成如下,使其实现了一条直线的平移和缩放。

二维形的旋转与翻转

二维形的旋转与翻转

二维形的旋转与翻转二维形的旋转与翻转是在数学和几何学中经常出现的操作,通过旋转和翻转可以改变图形的方向和位置,从而使得图形在空间中呈现不同的样貌和特性。

本文将深入探讨二维形的旋转和翻转,介绍其定义、方法和应用。

一、旋转操作旋转是指将一个图形围绕某一点旋转一定角度而不改变其形状和大小。

在二维平面坐标系中,旋转可以分为顺时针旋转和逆时针旋转两种方式。

1. 顺时针旋转顺时针旋转是指将一个图形按顺时针方向旋转一定角度。

假设有一个图形A,其坐标点为(x,y),要将A图形顺时针旋转θ角度后得到新的图形A',可以使用以下转换公式:x' = x * cosθ - y * sinθy' = x * sinθ + y * cosθ其中,x'和y'为旋转后图形A'的新坐标点,x和y为旋转前图形A的坐标点,θ为旋转角度。

2. 逆时针旋转逆时针旋转与顺时针旋转相反,是指将一个图形按逆时针方向旋转一定角度。

同样假设有一个图形A,要将A图形逆时针旋转θ角度后得到新的图形A',可以使用以下转换公式:x' = x * cosθ + y * sinθy' = -x * sinθ + y * cosθ二、翻转操作翻转是指将一个图形按照某一轴进行镜像反转,可以分为水平翻转和垂直翻转两种方式。

1. 水平翻转水平翻转是指将一个图形以水平轴为对称轴进行镜像反转。

假设有一个图形A,其坐标点为(x,y),要将A图形水平翻转后得到新的图形A',可以使用以下转换公式:x' = xy' = -y2. 垂直翻转垂直翻转是指将一个图形以垂直轴为对称轴进行镜像反转。

同样假设有一个图形A,要将A图形垂直翻转后得到新的图形A',可以使用以下转换公式:x' = -xy' = y三、应用场景二维形的旋转和翻转在现实生活和工程应用中有广泛的应用,下面将介绍其中几个常见的应用场景。

计算机图形学-变换

计算机图形学-变换
1
第3章 变换
基本的二维几何变换 二维复合变换 其他二维变换 三维几何变换 OpenGL几何变换函数 三维图形的显示流程 投影 裁剪
2
几何变换
应用于对象几何描述并改变它的位置、方 向或大小的操作称为几何变换(geometric transformation) 基本的二维几何变换包括平移、旋转和缩 放
8
矩阵表示和齐次坐标
许多图形应用涉及到几何变换的顺序 需要用一个通式来表示平移、旋转和缩放
P M1 P M 2
将2×2矩阵扩充为3×3矩阵,可以把二维几 何变换的乘法和平移项组合为单一矩阵表示
9
二维平移矩阵
x 1 0 t x x y 0 1 t y y 1 0 0 1 1
三维坐标轴旋转
X轴坐标不变,循环替代x、y、z三个 轴可以得到绕x轴旋转的公式
z
y ' y cos z sin
y
z ' y sin z cos x' x
x
35
三维坐标轴旋转
y轴坐标不变,循环替代x、y、z三个 轴可以得到绕y轴旋转的公式
x
z
y
z ' z cos x sin x' z sin x cos y' y
glMatrixMode (GL_MODELVIEW); glColor3f (0.0, 0.0, 1.0); glRecti (50, 100, 200, 150); //显示蓝色矩形
glColor3f (1.0, 0.0, 0.0); glTranslatef (-200.0, -50.0, 0.0); glRecti (50, 100, 200, 150); //显示红色、平移后矩形

计算机图形学_ 二维图形变换_53 二维图形变换原理及齐次坐标_

计算机图形学_ 二维图形变换_53 二维图形变换原理及齐次坐标_
普通坐标×h→齐次坐标 齐次坐标÷h→普通坐标 当h = 1时产生的齐次坐标称为“规格化坐标”,因为前n个 坐标就是普通坐标系下的n维坐标
为什么要采用齐次坐标?
在笛卡儿坐标系内,向量(x,y)是位于z=0的平面上的点 ;而向量(x,y,1)是位于z=1的等高平面上的点
对于图形来说,没有实质性的差别,但是却给后面矩阵运 算提供了可行性和方便性
假如变换前的点坐标为(x,y),变换后的点坐标为(x*,y* ),这个变换过程可以写成如下矩阵形式:
x*, y*x,
x* a1x b 1 y c1
y•M
x*, y*x
a1
y
1
b 1
c1
a2 b2 c2
上两式是完全等价的。对于向量(x,y,1),可以在几何意义 上理解为是在第三维为常数的平面上的一个二维向量。
这种用三维向量表示二维向量,或者一般而言,用一个n+1维 的向量表示一个n维向量的方法称为齐次坐标表示法
n维向量的变换是在n+1维的空间进行的,变换后的n维结果 是被反投回到感兴趣的特定的维空间内而得到的。
如n维向量(p1,p2,...,pn)表示为(hp1,hp2,...,hpn,h), 其中h称为哑坐标。 普通坐标与齐次坐标的关系为“一对多”:
变换图形就是要变换图形的几何关系,即改变顶点的坐 标;同时,保持图形的原拓扑关系不变
仿射变换(Affine Transformation或 Affine Map)是一 种二维坐标到二维坐标之间的线性变换 (1)“平直性”。即:直线经过变换之后依然是直线
(2)“平行性”。即:平行线依然是平行线,且直线上 点的位置顺序不变)
采用了齐次坐标表示法,就可以统一地把二维线形变换表示 如下式所示的规格化形式:

计算机图形学 5.1二维变换

计算机图形学 5.1二维变换

a11b13 a12b23 a13b33 a 21b13 a 22b23 a 23b33 (5-1) a n1b13 a n 2 b23 a n3b33
由线性代数知道,矩阵乘法不满足交换律,只有左矩 阵的列数等于右矩阵的行数时,两个矩阵才可以相乘。 特别地,对于二维变换的两个3×3的方阵A和B,矩阵 相乘公式为:
5.1.1 规范化齐次坐标
为了使图形几何变换表达为图形顶点集合矩阵与 某一变换矩阵相乘的问题,引入了规范化齐次坐标。 所谓齐次坐标就是用n+1维矢量表示n维矢量。 例如,在二维平面中,点P(x,y)的齐次坐标表示为 (wx,wy,w)。类似地,在三维空间中,点P(x,y,z) 的齐次坐标表示为(wx,wy,wz,w)。这里,w为任一 不为0的比例系数,如果w=1就是规范化的齐次坐标。 二维点P(x,y)的规范化齐次坐标为〔x,y,1〕,三维 点P(x,y,z)的规范化齐次坐标为〔x,y,z,1〕。不 能写成下标形式,w和x,w和y,w和z是乘法的关系。 定义了规范化齐次坐标以后,图形几何变换可以 表示为图形顶点集合的规范化齐次坐标矩阵与某一变换 矩阵相乘的形式。
x1 x P 2 xn y1 y2 yn 1 1 1
变换后图形顶点集合的规范化齐次坐标矩阵为:
x'1 x' ' P 2 x' n y '1 y' 2 y'n 1 1 1
a b 二维变换矩阵为: T c d l m
a11b11 a12b21 a13b31 a11b12 a12b22 a13b32 a b a b a b a 21b12 a 22b22 a 23b32 21 11 22 21 23 31 a n1b11 a n 2 b21 a n3b31 a n1b12 a n 2 b22 a n3b32

第4章二维变换

第4章二维变换

• 性质
U •V = V •U U •V = 0 ⇔ U ⊥ V U •U = 0 ⇔ U = 0
变换的数学基础(3/4) 变换的数学基础
– 矢量的长度
• 单位矢量 • 矢量的夹角
2 U = U • U = u x + u y + u z2 2
U •V cos θ = U •V
– 矢量的叉积
i U ×V = ux vx
– 在世界坐标系( 在世界坐标系(WCS)中指定的矩形区域 , ) 用来指定要显示的图形 。
2. 视区
– 在设备坐标系(屏幕或绘图纸) 在设备坐标系(屏幕或绘图纸)上指定的矩形区域 , 用来指定窗口内的图形在屏幕上显示的大小及位置。 用来指定窗口内的图形在屏幕上显示的大小及位置。
3. 窗口到视区的变换
P′=P+Tm 等价于
[x’ y’]=[x y] +[Mx My]
图形变换的特点( 4.3.1 图形变换的特点(续)
比例变换 P′=P×Ts
Sx 0 Ts= 0 Sy Sx、Sy分别表示比例因子。 cosθ sinθ Tr= -sinθ cosθ θ>0时为逆时针旋转 θ<0时为顺时针旋转
旋转变换 P'=P×Tr
变换后的 顶点坐标
P
变换前的 顶点坐标

T2D
二维变换矩阵
二维变换矩阵中: a b 是对图形进行缩放、旋转、对称、错切等变换。 c d [ l m] 是对图形进行平移变换
• 计算机图形场景中所有图形对象的空间定位和定义,包括观 计算机图形场景中所有图形对象的空间定位和定义, 察者的位置视线等,是其它坐标系的参照。 察者的位置视线等,是其它坐标系的参照。
2.模型坐标系(Modeling Coordinate System,也称局部坐标系) 模型坐标系

二维图形几何变换

二维图形几何变换

⼆维图形⼏何变换⼀、基本变换1. 平移定义:将物体沿直线路径从⼀个坐标位置移到另⼀个坐标位置的重定位。

不产⽣变形⽽移动物体的刚体变换。

原始坐标位置:(x ,y ),平移距离t x 、t y ,新位置(x ′,y ′),则x ′=x +t x ,y ′=y +t y 表⽰为矩阵形式,令:→P =x y→P ′=x ′y ′→T =t x t y⼆位平移⽅程:→P ′=→P +→T2. 旋转当参考点为(0,0)定义:以某个参考点为圆⼼,将对象上的各点(x ,y )围绕圆⼼转动⼀个逆时针⾓度θ,变成新的坐标(x ′,y ′)的变换。

x ′=rcos (φ+θ)=rcos φcos θ−rsin φsin θy ′=rsin (φ+θ)=rsin φcos θ+rcos φsin θ∵x =rcos φ,y =rsin φ∴x ′=xcos θ−ysin θy ′=xsin θ+ycos θ令:→R =cos θ−sin θ−sin θcos θ写成矩阵形式:→P ′=→R ⋅→P绕任意指定的旋转位置(x r ,y r )旋转的变换⽅程1. 将坐标系原点平移到(x r ,y r )2. 在新的坐标系下做旋转变换3. 将坐标原点平移回原坐标系x ′=x r +(x −x r )cos θ−(y −y r )sin θy ′=y r +(x −x r )sin θ+(y −y r )cos θ3. 变化(缩放)Scaling定义:使对象按⽐例因⼦Sx 和Sy 放⼤或缩⼩的变换。

x ′=x ⋅S xy ′=y ⋅S y令→S =S x 00S y矩阵形式:→P ′=→S ⋅→PS x 、S y 均⼩于1,缩⼩物体尺⼨,S x 、S y 均⼤于1,放⼤物体。

S x =S y ,则保持物体相对⽐例缩放⼀致。

特殊情况当Sy =−1、Sx =1,按x 轴反射当Sy =1、Sx =−1,按y 轴反射()()()()()当Sy =−1、Sx =−1,按原点(0,0)反射⼆、变换矩阵每个基本变换均可表⽰为普通矩阵形式:→P ′=→M 1→P +→M 2平移将2×2矩阵扩充为3×3矩阵,将⼆维⼏何变换的乘法和平移项组合成单⼀矩阵表⽰平移。

二维图形的几何变换 对称、平移

二维图形的几何变换  对称、平移

实验五.二维图形的几何变换1.算法分析对称和平移均可利用数学里的坐标系的点的坐标计算出新图形的每个顶点的坐标2.代码实现void CHuXiaoHua_graphics5View::Onsymmetry(){// TODO: Add your command handler code hereRedrawWindow();CDC* pDC=GetDC();CPen newpen(PS_SOLID,3,RGB(65,34,53));CPen *old=pDC->SelectObject(&newpen);CPoint spt [10];spt[0]=CPoint(100,30); //绘制多边形区域spt[1]=CPoint(150,80);spt[2]=CPoint(150,150);spt[3]=CPoint(115,150);spt[4]=CPoint(115,115);spt[5]=CPoint(85,115);spt[6]=CPoint(85,150);spt[8]=CPoint(50,80);spt[9]=CPoint(100,30);pDC->Polyline(spt,10);for(int i=0;i<=9;i++){spt[i].x=400-spt[i].x;}pDC->Polyline(spt,10);}void CHuXiaoHua_graphics5View::Ontranslation() {// TODO: Add your command handler code here RedrawWindow();CDC* pDC=GetDC();CPen newpen(PS_SOLID,3,RGB(65,34,53));CPen *old=pDC->SelectObject(&newpen);CPoint spt [10];spt[0]=CPoint(100,30); //绘制多边形区域spt[1]=CPoint(150,80);spt[3]=CPoint(115,150);spt[4]=CPoint(115,115);spt[5]=CPoint(85,115);spt[6]=CPoint(85,150);spt[7]=CPoint(50,150);spt[8]=CPoint(50,80);spt[9]=CPoint(100,30);pDC->Polyline(spt,10);for(int i=0;i<=9;i++){spt[i].y+=120;}pDC->Polyline(spt,10); }3.运行结果对称平移。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
原点沿 x 方向放缩 Sx 倍,沿 y 方 向放缩Sy倍。其中Sx和Sy称为比 例系数。
P'(4,3) P(2,1)
x ' xs x y '6-2
比例变换(Sx=2,Sy=3)
比例变换
推导: x’=Sx*X,y’=Sy*Y
x'
y ' 1 x
y 1 T2 D x
复合变换具有形式:
P' P T P (T1 T2 T3 Tn ) P T1 T2 T3 Tn (n 1)
Y
Y
Y
X
X
X (b)关于y轴对称
(c)关于原点对称
(a)关于x轴对称
对称变换
对称变换后的图形是原图形关于某一轴线或原点的镜像。
Y
Y
X (d)关于x=y对称
(e)关于x=-y对称
X
对称变换
X
(1)关于x轴对称
Y
(a)关于x轴对称
Y
P(x,y) X P'(x,-y) (a)关于x轴对称
1 0 0 0 1 0 0 0 1
矩阵:
S x 0 0
0 Sy 0
0 0 1
a b y 1 c d l m
p q s
比例变换
Sx=Sy>1 原图 原图 Sx<Sy
Sx=Sy<1
Sx>Sy
(a)
Sx=Sy比例 图6-3
(b) 比例变换
Sx<>Sy比例
比例变换
整体比例变换:
对称变换
X
(2)关于y轴对称
(b)关于y轴对称
Y
P'(-x,y)
p(x,y) X
1 0 0 0 1 0 0 0 1
(b)关于y轴对称
Y
对称变换
X
(3)关于原点对称
(c)关于原点对称
P(x,y) X
1 0 0 0 1 0 0 0 1
0 0 1
(1)沿x方向错切
(2)沿y方向错切 (3)两个方向错切
二维图形几何变换的计算
几何变换均可表示成 P’ = P * T 的形式: 1. 点的变换 2. 直线的变换 3. 多边形的变换 4. 曲线的变换
4.1.3 复合变换
复合变换是指:

图形作一次以上的几何变换,变换结果是每次的变换矩阵相乘。 任何一复杂的几何变换都可以看作基本几何变换的组合形式。
矩阵:逆时针旋转θ角
顺时针旋转θ角?
cos sin 0
sin cos 0
0 0 1
旋转变换
简化计算(θ很小)
x'
y ' 1 x
1 0 y 1 1 0 0 0 1
对称变换
对称变换后的图形是原图形关于某一轴线或原点的镜像。
平移变换
平移是指将p点沿直线路径从一个坐标位置移到另一个坐标位置的重定位过程。
平移是一种不产生变形而移动物体的
刚 体 变 换 ( rigid-body transformation)
P' T P Tx Ty
x' x Tx y' y Ty
Y
X 图6-1 平移变换
平移变换
1 0 0 0 1 0 0 0 s
a b y 1 c d l m p q s
问题:S>1时缩还是放?
x'
y ' 1 x
y 1 T2 D x
y/s
[x’ y’ 1]=[x y s]=[x/s
s/s]
旋转变换

基本几何变换都是相对于坐标原点和坐标 轴进行的几何变换
二维变换矩阵
x'
y ' 1 x
y 1 T2 D x
a b y 1 c T1 d l T2 m
p q T3 s T4
T1:比例、旋转、对称、错切 T2:平移 T3:投影 T4:整体缩放
P'(-y,-x)
0 1 0 1 0 0 0 0 1
(e)关于x=-y对称
错切变换
错切变换,也称为剪切、错位变换,用于产生弹性物体的变 形处理。
Y
Y
Y
(a)
X 原图
(b)
沿x方向错切
X
(c)
X
图6-7 错切变换
沿y方向错切
错切变换
其变换矩阵为:
1 d b 1 0 0
图6-4 旋转变换
旋转变换
推导:
x'
y ' 1 x
y 1 T2 D x
a b y 1 c d l m
p q s
y’= rsin(a+θ) X’ = rcos(a+θ) = rcosacosθ-rsinasinθ = rcosasinθ+rsinacosθ = x cos θ-y sinθ = x sin θ+y cosθ
二维旋转是指将p点绕坐标原点转动某个角度(逆时针为正, 顺时针为负)得到新的点p’的重定位过程。 X’ = rcos(a+θ) = rcosacosθ-rsinasinθ = x cos θ-y sinθ
P' r θ r
α
Y
P X
y’= rsin(a+θ) = rcosasinθ+rsinacosθ = x sin θ+y cosθ
推导: x’=x+Tx,y’=y+Ty
x'
y ' 1 x
y 1 T2 D x
a b y 1 c d l m
p q s
矩阵:
1 0 0 1 Tx Ty
0 0 1
Tx,Ty称为平移矢量
比例变换
比例变换是指对 p点相对于坐标
第4章 图形变换(二维)
提出问题:
如何对二维图形进行方向、尺寸和形状 方面的变换
如何方便地实现在显示设备上对二维图
形进行观察
基本概念
几何变换
图形的几何变换是指对图形的几何信息经过平移、比 例、旋转等变换后产生新的图形,是图形在方向、尺
寸和形状方面的变换。
二维图形几何变换
平移变换 旋转变换 比例变换
(c)关于原点对称
Y
Y
对称变换
(4)关于y=x轴对称
x=y p(x,y) p'(y,x) X (d)关于x=y对称
Y
X (d)关于x=y对称
0 1 0 1 0 0 0 0 1
Y
对称变换
(5)关于y=-x轴对称
(e)关于x=-y对称
Y
X
x=-y
Y
P(x,y) X
相关文档
最新文档