二维图形几何变换.
- 格式:ppt
- 大小:1.53 MB
- 文档页数:41
实验报告学院:计算机学号:姓名:实验四 二维图形的基本几何变换一、实验目的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. 平移定义:将物体沿直线路径从⼀个坐标位置移到另⼀个坐标位置的重定位。
不产⽣变形⽽移动物体的刚体变换。
原始坐标位置:(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. 翻译向量法:平移可以通过翻译向量来实现。
翻译向量可以表示从一个点移动到另一个点的位移量,通常使用向量坐标的形式来表示。
假设有一个点A(x1, y1),要将其平移至另一个点B(x2, y2),则平移向量可以表示为(Tx, Ty),其中Tx = x2 - x1,Ty = y2 - y1。
通过将所有点坐标的x和y值分别加上相应的平移向量,即可将整个几何形状平移至目标位置。
2. 平移矩阵法:平移也可以通过平移矩阵来实现。
平移矩阵是一个2x3的矩阵,其第三列表示平移向量,即[1, 0, Tx; 0, 1, Ty]。
通过将几何形状的坐标点与平移矩阵相乘,即可得到平移后的新坐标。
该方法更适用于计算机图形学和图像处理中的平移操作。
二、旋转方法旋转是指将一个几何形状绕着某一点或某一直线进行旋转。
下面是旋转的基本方法:1. 极坐标法:通过极坐标系来进行旋转。
假设有一个点A(x, y),要将其绕原点O旋转一个角度θ,通过将其坐标转换为极坐标形式(r, φ),其中r = √(x^2+y^2),φ = arctan(y / x)。
旋转后的新坐标可以表示为(r, φ + θ)。
通过将所有点的极坐标进行相应的旋转计算,再转换回直角坐标系即可完成旋转操作。
2. 旋转矩阵法:旋转也可以通过旋转矩阵来实现。
旋转矩阵是一个2x2的矩阵,其元素由旋转角度θ决定。
假设有一个点A(x, y),通过旋转矩阵[R] = [cos(θ), -sin(θ); sin(θ), cos(θ)],点A的旋转后坐标可以表示为点B(x', y') = [R] * A。