实验三 二维图形的几何变换

实验三 二维图形的几何变换
实验三 二维图形的几何变换

计算机图形学实验指导书

陈华光、陈多、刘长松编

专业班级计算机0902_

姓名_

学号200903010225 _

湖南工程学院

二○一二年六月

计算机图形学实验报告三

实验名称 二维图形的几何变换 评分 _ 实验日期 2012 年 6 月 11 日 指导教师 李 长 松 _ 姓名 专业班级 计算机0902 学号 _

一、实验目的

1、复习不同的二维坐标变换公式。

2、掌握二维坐标变换公式的使用方法。

3、对二维坐标组合变换的灵活运用。

二、实验要求

1、在屏幕上绘制出较简单的几何图形。

2、 对1的图形进行平移变换,绘制出变换后的几何图形,并在下边标注出实施x ,y 各多少的平称坐标变换。

3、对1的图形进行旋转变换,绘制出变换后的几何图形,并在下边标注出实施多少度的旋转坐标变换。

4、对1的图形进行对称变换,绘制出变换后的几何图形,并在下边标注出实施对什么坐标进行的对称变换。

5、对1的图形进行错切变换,绘制出变换后的几何图形,并在下边标注出实施对何种坐标进行的错切变换。

6、对1的图形进行比例变换,绘制出变换后的几何图形,并在下边标注出实施的多少比例坐标变换。

7、为了进行比较,适当选择坐标,可将原图(变换前)及经过不同变换后的图形绘制在同一个屏幕上,设置不同的线形或颜色加以区分各种变换。

三、关键算法及实现原理

1、二维图形的变换实际上是一个变换矩阵,平面图形是由若干个二维点(x i ,y i )组成,经过变换后的二维点(x ’i , y ’i ),其变换公式为:

对应于不同的变换,都是用矩阵乘法来计算坐标,只需改变变换矩阵即可。因此对每一

?????

??

??????????

?????????=????????????????100a 11......

1......1111......1 (11222)

1'''2'2'1'1l m d c b y x y x y x y x y x y x n

n

n

n

种坐标变换编成一个子程序。

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(‘三维等高线’)

六、实验收获及体会

1、通过本次试验,我基本掌握了二维几何变换的方法。

2、从基本的几何问题入手,根据实际的变换过程编写程序。其中遇到了不少问题,比如,

在求关于直线的对称时,最开始由于对称变换的变换矩阵出现了错误,使得最后出现了非预期的结果。最后通过检查,才发现了这个问题。

3、二维几何变换有着广泛的应用,使得数学的基本知识在计算机上得到了实现。

七、参考源程序(可附页)

#include

#include

#include

#include

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 s)

{

f[0][0]=s;f[0][1]=0.0;f[0][2]=0.0;

f[1][0]=0.0;f[1][1]=s;f[1][2]=0.0;

f[2][0]=0.0; f[2][1]=0.0; f[2][2]=1.0;

}

void taisho_y()

{

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]=0.0; f[2][1]=0.0; f[2][2]=1.0;

}

void axis()

{

line(scx(0.0),scy(-ymax/2),scx(0),scy(ymax/2)); line(scx(-xmax/2),scy(0.0),scx(xmax/2),scy(0.0) );

}

void tuoq(double a,double b)

{

f[0][0]=1.0;f[0][1]=b;f[0][2]=1.0;

f[1][0]=a;f[1][1]=1.0;f[1][2]=0.0;

f[2][0]=0.0; f[2][1]=0.0; f[2][2]=1.0;

}

double affinex(double x,double y,double d) {

xx=x*f[0][0]+y*f[1][0]+d*f[2][0];

return(xx);

}

double affiney(double x,double y,double d) {

yy=x*f[0][1]+y*f[1][1]+d*f[2][1];

return(yy);

}

void drawtu(x2,y2)

double x2[5],y2[5];

{

int i;

for(i=0;i<=3;i++)

{

line(scx(x2[i]),scy(y2[i]),scx(x2[i+1]),scy(y2[i+ 1]));

}

}

void main()

{int drive=DETECT,mode;

static double x1[]={50.0,60.0,150.0,160.0,50.0}; static double y1[]={0.0,50.0,50.0,-10.0,0.0}; static double x2[5],y2[5]; int i;

double x,y,xx,yy,yt;

initgraph(&drive,&mode,"c:\\tc3\\bgi"); setcolor(RED);

axis();

for(i=0;i<=3;i++)

{

line(scx(x1[i]),scy(y1[i]),scx(x1[i+1]),scy(y1[i+ 1]));

}

/*parallel(100,-100) */

getch();

x=100;y=-100;

parallel(x,y);

setcolor(BLUE);

for(i=0;i<=4;i++)

{

x2[i]=affinex(x1[i],y1[i],1.0);

y2[i]=affiney(x1[i],y1[i],1.0);

}

drawtu(x2,y2);

yt=scy(y2[0])+10;

outtextxy(scx(x2[0]),yt,"parallel(100,-100)"); /*taisho_y() */

getch();

taisho_y();

setcolor(YELLOW);

for(i=0;i<=4;i++)

{

x2[i]=affinex(x1[i],y1[i],1.0);

y2[i]=affiney(x1[i],y1[i],1.0);

}

drawtu(x2,y2);

yt=scy(y2[0])+10;

outtextxy(scx(x2[0]),yt,"taisho_y"); /*touq(2,0) */

getch();

tuoq(2,0);

setcolor(LIGHTBLUE);

for(i=0;i<=4;i++)

{

x2[i]=affinex(x1[i],y1[i],1.0);

y2[i]=affiney(x1[i],y1[i],1.0);

}

drawtu(x2,y2);

yt=scy(y2[0])+10;

outtextxy(scx(x2[0]),yt,"tuoq(2,0)"); /*scale(2) */

getch();

scale(2);

setcolor(LIGHTRED);

for(i=0;i<=4;i++)

{

x2[i]=affinex(x1[i],y1[i],1.0);

y2[i]=affiney(x1[i],y1[i],1.0);

}

drawtu(x2,y2);

yt=scy(y2[0])+10;

outtextxy(scx(x2[0]),yt,"scale 2");

getch();

closegraph(); }

二维几何图形变换.

// 二维几何图形变换.cpp : 定义应用程序的类行为。 // #include "stdafx.h" #include "二维几何图形变换.h" #include "MainFrm.h" #include "二维几何图形变换Doc.h" #include "二维几何图形变换View.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CMyApp BEGIN_MESSAGE_MAP(CMyApp, CWinApp) ON_COMMAND(ID_APP_ABOUT, OnAppAbout) // 基于文件的标准文档命令 ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew) ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen) // 标准打印设置命令 ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup) END_MESSAGE_MAP() // CMyApp 构造 CMyApp::CMyApp() { // TODO: 在此处添加构造代码, // 将所有重要的初始化放置在InitInstance 中 } // 唯一的一个CMyApp 对象 CMyApp theApp; // CMyApp 初始化 BOOL CMyApp::InitInstance() {

// 如果一个运行在Windows XP 上的应用程序清单指定要 // 使用ComCtl32.dll 版本6 或更高版本来启用可视化方式, //则需要InitCommonControls()。否则,将无法创建窗口。 InitCommonControls(); CWinApp::InitInstance(); // 初始化OLE 库 if (!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE; } AfxEnableControlContainer(); // 标准初始化 // 如果未使用这些功能并希望减小 // 最终可执行文件的大小,则应移除下列 // 不需要的特定初始化例程 // 更改用于存储设置的注册表项 // TODO: 应适当修改该字符串, // 例如修改为公司或组织名 SetRegistryKey(_T("应用程序向导生成的本地应用程序")); LoadStdProfileSettings(4); // 加载标准INI 文件选项(包括MRU) // 注册应用程序的文档模板。文档模板 // 将用作文档、框架窗口和视图之间的连接 CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CMyDoc), RUNTIME_CLASS(CMainFrame), // 主SDI 框架窗口 RUNTIME_CLASS(CMyView)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); // 分析标准外壳命令、DDE、打开文件操作的命令行 CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // 调度在命令行中指定的命令。如果 // 用/RegServer、/Register、/Unregserver 或/Unregister 启动应用程序,则返回FALSE。if (!ProcessShellCommand(cmdInfo)) return FALSE; // 唯一的一个窗口已初始化,因此显示它并对其进行更新 m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow();

图形的几何变换

《计算机图形学》上机实习报告(一)——基本图形的生成 一、实习目的和要求 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、个人总结

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米比一比。 【设计意图:在对相关知识点进行复习整理后,趁热打铁进行针对性的巩固训练,及时检查学生的掌握情况,从而确定下一步教学内容。】 师:同学们,今天我们复习了“图形与几何”,咱们这学期的内容到这就结束了,但是知识的学习与应用是无止境的,在今后的生活和学习中,只要你们努力,相信就能掌握更多的知识。

二维几何变换代码-MATLAB

二、二维几何变换 %c6_Test.m文件,这是主文件 clearall; clc; %Main(); Menu(); %Menu.m文件,主界面函数 % function Menu() %程序主界面函数 %初始化图形数据矩阵为空 Figure=[]; setappdata(0,'FigureData',Figure); %主界面布局 leftbase=10; bottombase=-50; scrsz = get(0,'ScreenSize'); figure('Position',[scrsz(3)/3 scrsz(4)/6scrsz(3)/3 scrsz(4)*2/3]); %figure(); uicontrol('Style','pushbutton','string','查看原图','position',[150+leftba se 500+bottombase 100 50],... 'callback','show_callback'); uicontrol('Style','pushbutton','string','导入图形','Position',[150+leftbase 430+bottombase10050],... 'Callback','input_callback'); uicontrol('Style','pushbutton','string','平移变换','Position',[150+leftbase 360+bottombase10050],... 'Callback','translation_callback'); uicontrol('Style','pushbutton','string','比例变换','Position',[150+leftbase290+b ottombase100 50],... 'Callback','proportion_callback'); uicontrol('Style','pushbutton','string','旋转变换','Position',[150+leftbase 220+bottombase 10050],... 'Callback','rotation_callback'); uicontrol('Style','pushbutton','string','错切变换','Position',[150+leftb ase 150+bottombase100 50],... 'Callback','shear_callback'); uicontrol('Style','popup','string','关于x轴对称|关于y轴对称|关于原点对称|关于y=x对称|关于y=-x对称',... 'Position',[150+leftbase80+bottombase10050],'callback',@mirror _callback); %set(duichen,'Callback',{@mirror_callback,duichen});

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

贵州大学实验报告 学院:计算机科学与技术专业:软件工程班级:软件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

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

实验五 图形几何变换的实现 班级:信计二班 学号: :解川 分数: 一、实验目的 为了掌握理解二维、三维的数学知识、变换原理、变换种类、变换方法;进一步理解采用齐次坐标进行二维、三维变换的必要性;利用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

二维图形基本变换规则及应用

二维图形基本变换规则及应用 (07级信息与计算科学傅强070350221) 摘要 利用计算机绘制的图形与我们日常见到的图片、照片是有相似之处。除图片、照片等图形外,自然界中还存在丰富多彩的有形物体。一般,根据图形所在空间的不同,可将图形分为:三维图形和二维图形。图片、照片属二维图形,自然界中形形色色的物体属于三维图形。在计算机绘图的过程中,二维图形的绘制是绘制三维图形的基础,研究计算机图形的生成必须从研究二维图形开始。计算机绘制图形时,无论图形多么复杂,都是利用一些相应图形基元经过图形变换组成的。在计算机绘图中,经常用到图形变换,图形变换是指图形信息经过几何变换后产生新的图形。基本的几何变换研究物体坐标在直角坐标系内的平移、旋转和变比等规则。本文主要介绍二维图形的一些基本变换规则及其应用 关键词:直角坐标系内;平移;旋转;应用 ABSTRACT Using the computer graphics and see our daily drawings, photographs are similarities. Besides the drawings, photographs and other graphic, nature also exist rich and colorful tangible objects. In general, according to the different space, the graphics can be divided into: 3d graphics and 2d graphics. The drawings, photographs of 2d graphics, all kinds of objects in the nature belongs to 3d graphics. In computer graphics, the process of 2d graphics rendering 3d graphics drawing is the basis, research of computer graphics generation must start from the 2d graphics. Computer graphics, no matter how complex, graphics are using some corresponding graphic element composed by graphical transformation. In computer graphics, often use graphics transformation, graphics transform refers to the graphical information through after new graphics geometry transform. The basic research object coordinate geometry transform in cartesian coordinate system in translation, rotation and change rules than etc. This paper mainly introduces some basic transformation of 2d graphics and its application in the rules. Keywords: a cartesian coordinate system, Translation, Rotating, application

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

面向对象程序设计 学号: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对象的读取与存储,图像线性变换,图像灰度拉伸等。然后把在视类中实现图像平移,图像镜像,图像转置,图像缩放及图像旋转的函数调用和实现。

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

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

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

实验五图形几何变换的实现 班级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、知识与技能 使学生全面掌握小学阶段所学的各种图形的特点及关系,能熟练的计算三角形、正方形、长方形、平行四边形、梯形的周长,和正方体、长方体、圆柱、圆锥的表面积、体积。 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°的角叫做周角。 注意区分直线、平角、周角的不同,他们的表示方式。以下各角分别是什么角?

图形与几何变换.doc

图形与变换 一、考点综述 考点内容: (1)图形的轴对称 (2)图形的平移 (3)图形的旋转 (4)图形相似变换 考纲要求: 1理解轴对称及轴对称图形的联系和区别; 2掌握轴对称的性质;根据要求正确地作出轴对称图形。 3理解图形的平移性质; 4会按要求画出平移图形; 5会利用平移进行图案设计。 6理解图形旋转的有关性质; 7掌握基本中心对称图形; 8会运用轴对称、平移和旋转的组合进行图案设计 9掌握按耍求作出简单平面图形经相似变换后的图形。 考查方式及分值: 近年全国各地的中考数学试题出现了不少有关图形变换的试题.这些试题以新课程标准的内容和要求为依据,注重对数学知识的理解,技能的掌握综合应用能力的检测,积极推进素质教育和数学创新思维培养,中考中考查的内容丰富,形式多样,题型涉及选择题、填空题、作图题和解答题等,其中尤以选择题居多,填空题相对较少,所占分值在3"0分,在选择、填空、解答题中都有出现,图案的设计常在作图题中出现。 备考策略: 加强了对学生实验操作、读图作图、合情推理等能力的耍求,强化对图形变换的训练, 适当渗透空间观念,侧重数学思想方法以及运用几何知识解决实际问题能力。 二、例题精析 例1、如图1,在直线/上摆放有AABC和宜角梯形DEFG,且CD = 6 cm;在左ABC中:ZC = 90°, ZA=30°, AB = 4 cm;在直角梯形DEFG 中:EF//DG, ZDGF=90°, DG=6 cm, DE = 4cm, ZEDG = 60° 解答下列问题: o (1)旋转:将AABC绕点C顺时针方向旋转90°,请你在图中作出旋转后的对应图形 △ABC,并求出AB】的长度; (2)翻折:将沿过点Bi且与直线/垂直的直线翻折,得到翻折后的对应图形

图形与几何心得体会

面积的初步了解 物体的表面或封闭图形的大小,叫做它们的面积。“面积”这一知识属于《数学课程标准》中空间与图形领域的内容。新课标中强调:在教学中,应注重使学生通过观察、操作、推理等手段,逐步认识简单几何体和平面图形的形状、大小、位置关系及变换;应注重通过观察物体、认识方向、制作模型、设计图案等活动,发展学生的空间观念。 “面积”的概念是学生学习几何形体的基础,因此要让学生在具体生动的情境中感悟和理解这一概念学习的重要性和必要性。因做到以下几点: 一、数学课堂教学紧密联系生活 《数学课程标准》指出:“学生的数学学习内容应当是现实的,有意义的,富有挑战性的,这些内容有利于学生主动地进行观察、实验、猜测、验证、推理与交流等数学活动。”学习内容来自学生生活实际,在学生已有的经验的基础上学习,可使学习更有效。因为,学习内容贴近学生知识经验,符合学生心理特征,容易形成知识结构,同时也充分体现了学习生活化的理念。面积的概念具有较强的抽象性,学生理解起来会有一定的难度,为了使学生较好地理解和掌握“面积”这个比较抽象的概念,我从生活入手,让学生找生活中物体的面,感知物体的面有大有小,进行物体面的大小比较,通过物体面的大小比较揭示物体表面的面积。这样层层深入,环环相扣,学生在不知不觉中理解了面积的含义,有种水到渠成的感觉。体现了现代教育思想

所倡导的“数学课堂教学应向学生提供与生活实际密切联系的、有价值的、富有趣味的教学内容”这一基本理念。 二、关注估计不规则图形的面积 教材中提供用方格纸估计不规则图形的面积,这些方法容易被教师们忽视,恰恰是这些细节影响学生最深。因为,现实生活中有很多物体并不像教材上那样有规则。让学生学会估计的方法更有价值,更能实现学以至用的目标,同时也是发展学生空间观念的重要途径之一。 从学生的生活经验出发,引导学生把生活中对图形的感受与空间存在的几何图形建立联系,让学生充分感受到数学和生活的联系,体会到数学确实就在我们的身边,更有效地发展学生的空间观念。从而形成应用意识 总之,要准确理解教材的编排意图,联系学生的生活,按照学生的认知规律,合理重构教材,通过多种途径培养学生的空间观念,形成应用意识,让学生在广阔的数学世界中遨游。

实验二维图形基本变换

实验一二维图形的基本变换 一.实验目的 1、掌握CAD图形处理的原理和方法; 2、通过上机操作,熟悉多边形的平移、比例和旋转变换,掌握二维图形的基本变换。 3、理解CAD对图形进行复合变换(平移、比例和旋转变换)的过程。 二.实验要求 1、上机调试所编程序,实现图形的绘制、平移变换、比例变换和旋转变换。 2、二维图形各点的坐标、平移、比例、旋转角度可由用户任意输入,原图形和变换后的图形必须同时显示在显示器上。 三.实验设备 1、计算机系统; 2、安装Turbo C或其他C语言集成开发工具 四.实验原理 在计算机图形处理中,经常需要对已经生成的图形进行几何变换处理。例如,改变原始图形的大小、移动图形到某一指定位置或根据需要将图形旋转某一个角度,这就要求图形的处理软件能够实现缩放、平移、旋转等几何变换。由于点是构成一个几何形体的最基本的元素,而一幅二维图形可以看成是一个点集,如三角形有三个特征

点……,因此,我们就可以把对图形的几何变换归结对点的变换。通过对构成几何图形的特征点集的几何变换即可实现整个图形的几何变换。即如何实现一个旧点到变化后新点的计算求解是本次实验的重点。 我们给出平移、比例、旋转变换的矩阵分别为: 平 移: T t =???? ??????1010001n m (m,n 分别为x,y 方向上的平移量) 全比例: T s =???? ??????1000000b a (a,b 分别为x,y 方向上的比例因子) 旋 转: T r =???? ??????-1000cos sin 0sin cos θθθθ (θ为旋转角,逆时针为正) 假设一几何图形由A(x A,y A ) B(x B ,y B ) C(x C ,y C ) D(x D ,y D )四点组成,那么变换后四点坐标为A ’(x ’A,y ’A ) B ’(x ’B ,y ’B ) C ’(x ’C ,y ’C ) D ’(x ’D ,y ’D ) 平移:??????????????1111''''''''D D C C B B A A Y X Y X Y X Y X =???????? ??????1111D D C C B B A A Y X Y X Y X Y X T t =??????????????1111D D C C B B A A Y X Y X Y X Y X ??????????1010001n m =?????? ????????++++++++1111n Y m X n Y m X n Y m X n Y m X D D C C B B A A 比例:??????????????1111''''''''D D C C B B A A Y X Y X Y X Y X =??????????????1111D D C C B B A A Y X Y X Y X Y X T s =??????????????1111D D C C B B A A Y X Y X Y X Y X ??????????1000000b a =?????? ????????1111D D C C B B B A bY aX bY aX bY aX bY aX

如何进行《图形与几何》的概念教学

李朝辉 《数学课程标准》指出:使学生逐步形成简单地几何形体地形状、大小和相互位置关系地表象,能够识别所学地几何形体,并能根据几何形体地名称再现它们地表象,培养初步地空间观念.学生在学习几何知识地过程中,重视对物体地原有感知,逐步掌物物体地形状、特征、大小和相互位置关系,并以此为材料进行思维,将图形、表象进行加工、组合,逐步培养和发展空间观念.因此,学会这部分教材对于学生培养空间观念,发展思维力、想象力,有着十分重要地意义.它同时也为学生以后学习几何知识打下扎实地基础.但是,在概念教学中往往存在以下两个问题:一是忽视概念地形成过程,教师往往把一个新地概念和盘托出,让学生死记硬背法则、定义;二是忽视概念间地联系,把许多本来有联系地概念,拆散成一粒粒散落地珠子,分散、孤立地保存在学生地脑海里,没能将珠子串成项链,概念不成系统,不能帮助学生形成良好地认知结构.要改变这些问题,我觉得应该以锻炼和发展学生地“思”为主线,把“看”、“动”、“练”、“理”有机地串联成一个思维体系,从而顺利达到“通”地目地.具体来讲就是:文档收集自网络,仅用于个人学习 看—全面观察.实践证明:儿童接触事物,探究事物地本质属性,经常是从观察开始和发现地.在现实生活中,学生对简单图形已有初步了解,如书地封面是长方形,红领巾是三角形,文具盒是长方体……,但他们对此地了解往往是表面地、模糊地,还不能说出其本质特征,往往是口欲言而无声.所以教学时,我因势利导,结合教学内容,充分利用实物、模型和多媒体等教学手段,丰富学生表象.引导学生用眼看、用手摸,做到上下、左右、前后和正反进行全面、仔细地观察,以此加强直观教学,加深学生对物体地初步认识,使他们由具体物体地形状在大脑中形成表象,继而上升为概念,初步培养或形成空间观念.文档收集自网络,仅用于个人学习 动—动手操作.杨振宇博士说:“中国地儿童不如欧洲和美国地儿童动手兴趣浓,主要原因是没有动手地机会.”其实动手操作是把书本等外在知识内化为自己知识地桥梁.由于小学生生性喜欢动手操作,而且抽象思维依赖于动作思维或形象思维展开,因此动手操作对小学生掌握知识、技能,培养动手能力,提高学习兴趣积极性等都有一定地实践意义.所以教学时,我尽量组织学生开展“剪”“拼”“量”“摆”“数”“做”等地实践活动,引导学生自己动手做出物体模型,学会对图形或模型进行分解、组合、平移、翻转等转化方法,使他们在动眼、动手、动脑、动口等亲身体验中加深对几何形体地感化方法,进一步理解掌握其本质特征,初步掌握几何图形面积地计算方法和转化方法,同时也更进一步培养学生地空间观念和想象能力.文档收集自网络,仅用于个人学习 如教学《圆柱体地侧面积》一课时,我让学生拿出自己地侧面裱有彩纸(或自己在侧面糊纸)地圆柱体,边看边摸说出其侧面特征后提问:“你能用转化地方法自己求出侧面地面积吗?”学生通过讨论、操作,有地学生说:“我沿着一条高剪开,侧面积转化成一个长方形,长方形地长相当于侧面积地周长(底面周长),长方形地宽相当于侧面地高,因为长方形地面积长×宽,所以侧面地面积侧面底面周长×高.”有地同学说:“我沿着一条斜线剪开,侧面转化成一个平行四边形,平行四边形地底相当于侧面地周长,平行四边形地高相当于侧面地高,因为平行四边形地面积底×高,所以侧面地面积底面周长×高.”.有地同学说:“我沿着高剪开,侧面转化成一个正方形,同样得到侧面地面积底×高.”通过操作,学生不但发现了展开后地特例(正方形是特殊地长方形),丰富了侧面地表象,而且通过眼、手、口、脑多种感官协调作用,学生主动、直观地掌握圆柱体侧面积地推导方法和计算方法,同时也潜移默化地交给学生一把开启面积计算方法地钥匙.实践证明:让学生用多种感官协调作用于同一事物,使具体事物地形象,在头脑中得到全面地反映,就学习地学习性和主动性,增强学生学习地参与意识,激发学习兴趣,活跃课常气氛,使学生以饱满高涨地热情投入学习,取得最佳地学习效果.文档收集自网络,仅用于个人学习

计算机图形学 二维变换 实验代码

#include "stdio.h" #include "conio.h" #include"graphics.h" #include "math.h" struct point { int x; int y; }triangle[3]; void ini() { triangle[0].x = 20; triangle[0].y = 70; triangle[1].x = 20; triangle[1].y = 100; triangle[2].x = 120; triangle[2].y = 70; setcolor(WHITE); line(triangle[0].x,triangle[0].y,triangle[1].x,triangle[1].y); line(triangle[0].x,triangle[0].y,triangle[2].x,triangle[2].y); line(triangle[1].x,triangle[1].y,triangle[2].x,triangle[2].y); } void move(int dx, int dy) { int i; for(i = 0; i < 3; i++) { line((triangle[i].x+dx),(triangle[i].y+dy),(triangle[(i+1)%3].x+dx),(triangle[(i+1)%3].y+dy)); } getch(); setcolor(0); for(i = 0; i < 3; i++) { line((triangle[i].x+dx),(triangle[i].y+dy),(triangle[(i+1)%3].x+dx),(triangle[(i+1)%3].y+dy)); } } void zoom(int sx,int sy) {

小学数学图形与几何教学设计

小学数学图形与几何教学设计 小学数学图形与几何教学设计:《认识图形》教学设计教学内容:标本二年级上册第三单元第一课时 教学目标: 1、让学生通过观察、比较,初步建立边的概念,初步认识四边形、五边形、六边形等平面图形。 2、通过对图形的分一分、搭一搭、围一围、折一折等活动,使学生体会图形的变换,发展空间观念。 3、使学生在学习活动中积累对数学的兴趣,培养交往、合作意识。 教师准备:各种图形,课件 学生准备:钉子板、彩纸、小棒、一套图形. 教学过程: 一、创设情境,激发兴趣 1、师:孩子们,今天老师要带大家到小熊贝贝家去作客,你们高兴吗?(课件出示情境图)仔细观察你就会发现,它们家藏着好多的图形宝宝呢,谁来说说你都找到哪些图形呀?(长方形、正方形、圆……)这些图

形宝宝看到小朋友们这么可爱,它们想和你们交朋友呢,你们愿意吗? 2、师:好,轻轻的打开你们桌面上的信封袋来看看,他们呀,早就跑到你们的信封袋里了,认识它们吗?1号图形是什么?2号呢?3号?还有呢? (教师把准备好的6个图形贴在黑板上) 今天,我们就来学习认识图形.(板书课题:认识图形) 二、自主探究,获得新知 (一)分类引入,初步认识四边形 1、自由分类 这些图形各种各样,你能不能按一个标准,给它们分一分? 先想好自己准备按什么来分,然后再动手。 2、交流,得到可以按“边”的条数来分 刚才有个小朋友把这些图形分成了两类,他是按什么分的,你听懂了吗?谁再来说一说?(板书:3条边。4条边。) 3、相机引入“边”的概念 大家分完了吗?老师有个问题:在这个长方形上“边”在哪里呀? (1)引导学生说说边。

(2)学生通过看一看,摸一摸,感觉边是怎么样的?(直直的,平平的) (3)师范指:1条、2条、3条、4条,长方形一共有四条边。 (4)那么正方形呢?数一数,正方形有几条边? 4、初步认识四边形 像长方形、正方形这样都有四条边围成的图形,我们可以称它们为四边形(板书:四边形) 5、巩固:下面这些图形哪些是四边形(课件出示) (二)认识五边形和六边形 1、认识五边形 这两个图形怎样变成两个完整的图形? 2、引出五边形 3,让学生在钉子板上围出不同形状的五边形。

相关文档
最新文档