实验 OpenGL几何变换

实验 OpenGL几何变换
实验 OpenGL几何变换

实验OpenGL几何变换

1.实验目的:

理解掌握一个OpenGL程序平移、旋转、缩放变换的方法。

2.实验内容:

(1)阅读实验原理,运行示范实验代码,掌握OpenGL程序平移、旋转、缩放变换的方法;

(2)根据示范代码,尝试完成实验作业;

3.实验原理:

(1)OpenGL下的几何变换

在OpenGL的核心库中,每一种几何变换都有一个独立的函数,所有变换都在三维空间中定义。

平移矩阵构造函数为glTranslate(tx, ty, tz),作用是把当前矩阵和一个表示移动物体的矩阵相乘。tx, ty,tz指定这个移动物体的矩阵,它们可以是任意的实数值,后缀为f(单精度浮点float)或d(双精度浮点double),对于二维应用来说,tz=0.0。

旋转矩阵构造函数为glRotate(theta, vx, vy, vz),作用是把当前矩阵和一个表示旋转物体的矩阵相乘。theta, vx, vy, vz指定这个旋转物体的矩阵,物体将绕着(0,0,0)到(x,y,z)的直线以逆时针旋转,参数theta表示旋转的角度。向量v=(vx, vy,vz)的分量可以是任意的实数值,该向量用于定义通过坐标原点的旋转轴的方向,后缀为f(单精度浮点float)或d(双精度浮点double),对于二维旋转来说,vx=0.0,vy=0.0,vz=1.0。

缩放矩阵构造函数为glScale(sx, sy, sz),作用是把当前矩阵和一个表示缩放物体的矩阵相乘。sx, sy,sz指定这个缩放物体的矩阵,分别表示在x,y,z方向上的缩放比例,它们可以是任意的实数值,当缩放参数为负值时,该函数为反射矩阵,缩放相对于原点进行,后缀为f(单精度浮点float)或d(双精度浮点double)。

注意这里都是说“把当前矩阵和一个表示移动<旋转, 缩放>物体的矩阵相乘”,而不是直接说“这个函数就是旋转”或者“这个函数就是移动”,这是有原因的,马上就会讲到。

假设当前矩阵为单位矩阵,然后先乘以一个表示旋转的矩阵R,再乘以一个表示移动的矩阵T,最后得到

的矩阵再乘上每一个顶点的坐标矩阵v。那么,经过变换得到的顶点坐标就是((RT)v)。由于矩阵乘法满足结合率,((RT)v) = R(Tv)),换句话说,实际上是先进行移动,然后进行旋转。即:实际变换的顺序与代码中写的顺序是相反的。由于“先移动后旋转”和“先旋转后移动”得到的结果很可能不同,初学的时候需要

特别注意这一点。

(2)OpenGL下的各种变换简介

我们生活在一个三维的世界——如果要观察一个物体,我们可以:

1、从不同的位置去观察它(人运动,选定某个位置去看)。(视图变换)

2、移动或者旋转它,当然了,如果它只是计算机里面的物体,我们还可以放大或缩小它(物体运动,让人看它的不同部分)。(模型变换)

3、如果把物体画下来,我们可以选择:是否需要一种“近大远小”的透视效果。另外,我们可能只希望看到物体的一部分,而不是全部(指定看的范围)。(投影变换)

4、我们可能希望把整个看到的图形画下来,但它只占据纸张的一部分,而不是全部(指定在显示器窗口的那个位置显示)。(视口变换)

这些,都可以在OpenGL中实现。

从“相对移动”的观点来看,改变观察点的位置与方向和改变物体本身的位置与方向具有等效性。在OpenGL 中,实现这两种功能甚至使用的是同样的函数。

由于模型和视图的变换都通过矩阵运算来实现,在进行变换前,应先设置当前操作的矩阵为“模型视图矩阵”。设置的方法是以GL_MODELVIEW为参数调用glMatrixMode函数,像这样:

glMatrixMode(GL_MODELVIEW);

该语句指定一个4×4的建模矩阵作为当前矩阵。

通常,我们需要在进行变换前把当前矩阵设置为单位矩阵。把当前矩阵设置为单位矩阵的函数为:glLoadIdentity();

我们在进行矩阵操作时,有可能需要先保存某个矩阵,过一段时间再恢复它。当我们需要保存时,调用glPushMatrix()函数,它相当于把当前矩阵压入堆栈。当需要恢复最近一次的保存时,调用glPopMatrix ()函数,它相当于从堆栈栈顶弹出一个矩阵为当前矩阵。OpenGL规定堆栈的容量至少可以容纳32个矩阵,某些OpenGL实现中,堆栈的容量实际上超过了32个。因此不必过于担心矩阵的容量问题。

通常,用这种先保存后恢复的措施,比先变换再逆变换要更方便,更快速。

注意:模型视图矩阵和投影矩阵都有相应的堆栈。使用glMatrixMode来指定当前操作的究竟是模型视图矩阵还是投影矩阵。

4.示范代码:

(1)、Translate示例

生成图形:

注意理解:myDraw1()和myDraw2()生成的图形完全相同,为什么?

(2)、Rotate示例

生成图形:

注意理解:myDraw1()和myDraw2()生成的图形完全相同,为什么?

(3)、Scale示例

生成图形:

注意理解:myDraw1()和myDraw2()生成的图形完全相同,为什么?

(4)、综合示例

生成图形:

5. 实验作业:

绘制如下图形:

(2)用几何变换绘制三个不同位置、旋转角度、颜色的菱形。

几何画板实验报告

一.实验内容:画出一个正方形 二.实验目的:学会使用变换中的旋转按钮 三.实验步骤: ①画出一条线段; ②选中线段左端点双击,标记中心; ③选中线段和另一端点,选择变换中的旋转按钮,并设置旋转角度为90°,然后在依次做出另外两条边。 四.实验结果 实验二 一实验内容:构造三角形的中线 二实验目的:学会构造线段中点

三实验步骤: ①单击线段工具,构造出一个三角形ABC; ②选中线段AB,执行构造-中点命令,构造出AB中点D ③单击线段工具,连接CD. 四实验结果 实验三 一实验内容:构造三角形的外心 二实验目的:学会构造线段的中垂线 三实验步骤: ①单击线段工具,构造出一个三角形ABC; ②选中线段AB,执行构造-中点命令,构造出AB中点D,同时选中AB和D,执行构造-垂线

③在AC上重复②,两垂线交点即为外心 四实验结果 一实验内容:绘制三角形的内心 二实验目的:学会构造已知角的平分线 三实验步骤: ①画出任意三点A,B,C,选中A,B.C三点,执行构造-线段,构造出三角形ABC; ②依次选中B,A,C,执行构造-角平分线,构造出BAC ∠的角平分线i; ③按照②的步骤做出ABC ∠的角平分线j; ④选中i,j,执行构造-中点命令,构造出三角形内心D; ⑤选中i,j,执行显示-隐藏平分线,隐藏平分线。 四实验结果:

实验五 一实验内容:绘制函数x =的函数图像 y3 二实验目的:绘图菜单的使用方法 三实验步骤: ①执行绘图-定义坐标系命令,新建坐标系,并将原点坐标的标签设为O; ②执行数据-新建函数命令,新建函数x =; y3 ③选中函数,执行绘图-绘制函数命令,画出x =的函数图像. y3 四实验结果

图形学实验报告

计 算 机 图 形 学 实验指导书 学号:1441901105 姓名:谢卉

实验一:图形的几何变换 实验学时:4学时 实验类型:验证 实验要求:必修 一、实验目的 二维图形的平移、缩放、旋转和投影变换(投影变换可在实验三中实现)等是最基本的图形变换,被广泛用于计算机图形学的各种应用程序中,本实验通过算法分析以及程序设计实验二维的图形变换,以了解变换实现的方法。如可能也可进行裁剪设计。 二、实验内容 掌握平移、缩放、旋转变换的基本原理,理解线段裁剪的算法原理,并通过程序设计实现上述变换。建议采用VC++实现OpenGL程序设计。 三、实验原理、方法和手段 1.图形的平移 在屏幕上显示一个人或其它物体(如图1所示),用交互操作方式使其在屏幕上沿水平和垂直方向移动Tx和Ty,则有 x’=x+Tx y’=y+Ty 其中:x与y为变换前图形中某一点的坐标,x’和y’为变换后图形中该点的坐标。其交互方式可先定义键值,然后操作功能键使其移动。 2.图形的缩放 在屏幕上显示一个帆船(使它生成在右下方),使其相对于屏幕坐标原点缩小s倍(即x方向和y方向均缩小s倍)。则有: 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

遥感实验报告

遥感原理与应用 实验报告 姓名:学号:学院:专业: 年月日 实验一: erdas视窗的认识实验 一、实验目的 初步了解目前主流的遥感图象处理软件erdas的主要功能模块,在此基础上,掌握几个视窗操作模块的功能和操作技能,为遥感图像的几何校正等后续实习奠定基础。 二、实验步骤 打开imagine 视窗 启动数据预处理模块 启动图像解译模块 启动图像分类模块 imagine视窗 1.数据预处理(data dataprep) 2.图像解译(image interpreter) 主成份变换 色彩变换 3.图像分类(image classification) 非监督分类 4. 空间建模(spatial modeler) 模型制作工具 三、实验小结 通过本次试验初步了解遥感图象处理软件erdas的主要功能模块,在此基础上,基本掌握了几个视窗操作模块的功能和用途。为后续的实验奠定了基础。 实验二遥感图像的几何校正 掌握遥感图像的纠正过程 二、实验原理 校正遥感图像成像过程中所造成的各种几何畸变称为几何校正。几何校正就是将图像数据投影到平面上,使其符合地图投影系统的过程。而将地图投影系统赋予图像数据的过程,称为地理参考(geo-referencing)。由于所有地图投影系统都遵循一定的地图坐标系统,因此几何校正的过程包含了地理参考过程。 几何校正包括几何粗校正和几何精校正。地面接收站在提供给用户资料前,已按常规处理方案与图像同时接收到的有关运行姿态、传感器性能指标、大气状态、太阳高度角对该幅图像几何畸变进行了几何粗校正。利用地面控制点进行的几何校正称为几何精校正。一般地面站提供的遥感图像数据都经过几何粗校正,因此这里主要进行一种通用的精校正方法的实验。该方法包括两个步骤:第一步是构建一个模拟几何畸变的数学模型,以建立原始畸变图像空间与标准图像空间的某种对应关系,实现不同图像空间中像元位置的变换;第二步是利用这种对应关系把原始畸变图像空间中全部像素变换到标准图像空间中的对应位置上,完成标准图像空间中每一像元亮度值的计算。 三、实验内容 根据实验的数据,对两张图片进行几何纠正 四、实验流程

实验二、应用轨迹与跟踪功能绘制图形(几何画板)

实验二、应用轨迹与跟踪功能绘制图形 一、实验目的: 认识、分清主动点和被动点,学会应用轨迹与追踪功能绘制图形 二、实验内容 1、作出双曲线、抛物线的轨迹 2、设ABCD为矩形,P是AB上的一动点,过P作PE⊥AC于E,PF⊥BD于F, (1)作出EF的中点轨迹。 (2)作出线段EF运动的轨迹。 3、三角形ABC顶点A在一定圆上运动,另外两个顶点固定,作出三角形ABC外心的轨迹。并讨论分出各种情形。 4、作出与已知定圆、定直线都相切的圆的圆心的轨迹。 三、实验步骤 1、(1)做一条射线,取端点A和射线上一点B构成线段作为定长2a 做一条直线,上面取两点F1 、F2为焦点。|F1 F2| >|AB| 再在射线上取点C 构造线段AC、BC 以F1为圆心,AC为半径做圆,F2为圆心,BC为半径做圆。 两圆相交的两点分别记为F、G。 选中点C、F构造轨迹,选中点C、G构造轨迹。则得到双曲线的一支。同理作图得双曲线另一支。 (2)做一条直线,取点上两点A、B 构造线段AB,并以A为圆心,AB为半径做圆,交直线于点C

选中点A和直线构造垂线I 在此垂线上取一点E。 选中点E和垂线I,构造垂线m。 选中点E、B构造线段。并选择它作中点F。 选中F和线段构造垂线n。 m与n交于一点G。 选中点E、G构造轨迹。则得到抛物线。 2、(1)制作矩形ABCD,取P上一点。连接AC、BD。 选中P和AC构造垂线,与AC的交点为E。 选中P和BD构造垂线,与BD的交点为F。 选中E、F构造线段。选择线段EF构造中点。 选中P、及EF的中点构造轨迹。 (2)选中点P及线段EF构造轨迹。 3、在平面上作一个圆。取圆上一点O。构造三角形BCD 分别取三条边的中点作垂线。三条垂线交于一点即是外心E。 选中点A和外心E,构造轨迹。 讨论:当三角形为锐角三角形时,轨迹在三角形内或与三角形最长边相交;当三角形为直角三角形,该轨迹的一个端点为三角形斜边中点,其他点均在三角形外,并平行于竖直的直角边;当三角形为钝角时,轨迹完全在三角形外,或与三角形最长边相交。 结论:外心运动轨迹在定点CD边所做的中垂线上。 4、构造定圆O和定直线k。

图像灰度变换实验报告

图像灰度变换报告 一.实验目的 1.学会使用Matlab ; 2.学会用Matlab 软件对图像进行灰度变换,观察采用各种不同灰度变换发法对最终图像效果的影响; 二.实验内容 1.熟悉Matlab 中的一些常用处理函数 读取图像:img=imread('filename'); //支持TIF,JPEG,GIF,BMP,PNG 等文件格式。 显示图像:imshow(img,G); //G 表示显示该图像的灰度级数,如省略则默认为256。 保存图片:imwrite(img,'filename'); //不支持GIF 格式,其他与imread 相同。 亮度变换:imadjust(img,[low_in,high_in],[low_out,high_out]); //将low_in 至high_in 之间的值映射到low_out 至high_out 之 间,low_in 以下及high_in 以上归零。 绘制直方图:imhist(img); 直方图均衡化:histeq(img,newlevel); //newlevel 表示输出图像指定的灰度级数。 2.获取实验用图像:rice.jpg. 使用imread 函数将图像读入Matlab 。 3 .产生灰度变换函数T1,使得: 0.3r r < 0.35 s = 0.105 + 2.6333(r – 0.35) 0.35 ≤ r ≤ 0.65 1 + 0.3(r – 1) r > 0.65 用T1对原图像rice.jpg 进行处理,使用imwrite 函数保存处理后的新图像。 4.产生灰度变换函数T2,使得: s = 5.用T2imwrite 保存处理后的新图像。 6.分别用 s = r 0.6; s = r 0.4; s = r 0.3 对kids.tiff 图像进行处理。为简便起见,使用Matlab 中的imadjust 函数,最后用imwrite 保存处理后的新图像。 7.对circuit.jpg 图像实施反变换(Negative Transformation )。s =1-r; 使

遥感实验报告

重庆交通大学 学生实验报告 实验课程名称遥感原理与应用 开课实验室测量与空间信息处理实验室 学院 2013 年级测绘工程专业 1班学生姓名刘文洋 学号 631301040126 开课时间 2015 至 2016 学年第 1 学期

目录 实验一 ENVI 视窗的基本操作 (2) 实验二遥感图像的几何校正 (4) 实验三遥感图像的增强处理 (8) 实验四遥感图像的变换 (12) 实验五遥感信息的融合 (15) 实验六遥感图像分类 --- 监督分类 (17) 实验七遥感图像分类 --- 非监督分类 (19) 实验八遥感图像分类后处理 (22)

实验一ENVI 视窗的基本操作 一、实验目的 初步了解目前主流的遥感图象处理软件 ENVI 的主要功能模块,在此基础上,掌握视窗操作模块的功能和操作技能,为遥感图像的几何校正等后续实习奠定基础。 二、实验内容 视窗功能介绍;文件菜单操作;显示数据;裁剪数据;合并波段 三、实验步骤 1、首先打开ENVI4.7软件,看见的只有菜单栏,如图所示: 2、打开每个下拉菜单浏览其下拉栏中都有哪些功能,比如:我们如果需要打开遥感文件,则可以选择File下的打开功能open image file,打开遥感图像如下图:

裁剪数据打开basic tools的resize data功能,如果需要对图像进行一系列处理,可以利用Transform,Classification等功能进行操作,在后续实验中我们也会用到其中的一些功能进行图像的一系列操作,到时候在详细叙述。 3、再熟悉了ENVI4.7的一些基本知识后我们可以简单地操作下,比如对一组数据分别用Gray Scale和Load RGB导入,看看两幅图的区别以及各自的优缺点。 四、实验结果分析 在这次的实验中,我们简单的熟悉了下ENVI4.7的一些功能,发现它是可以对遥感图像进行图像几何纠正,直方图均衡,监督分类,非监督分类等一系列操作,为我们后续利用软件对遥感图像处理打下了基础。

几何画板实验报告(函数y=Asin(ωx+φ)图象)

实验报告 实验项目:设计制作课堂教学型的课件 班级:姓名: 学号:实验时间:2013 年月日 一、实验目的:通过计算机辅助教学的理论与实践相结合,查阅资料,设计制作中学数学某一节课(自选内容)的课堂教学型课件,在实验过程中掌握课堂教学型课件设计方法与制作技巧。 二、实验设备:多媒体计算机、几何画板等 三、教学设计方案

四、课件的创作思路 按照课本要求,考虑到函数y=Asin(ωx+φ)的图象相对难掌握,特选取几何画板作为课件的制作软件。课件设计由浅入境,通过对旧知识点的回顾复习,再慢慢计入新知识点的学习,以问题为基本主导线,注重学生自主动手,自主学习能力,通过讨论,探讨问题渐渐深入课程学习,渐渐把握参数φ、ω、A对函数y=Asin(ωx+φ)的图象的影响。所以课件在设计中看重问题,情景的设计,以及如何让学生更容易,更直观地了解,掌握参数φ,ω,A对函数y=Asin(ωx+φ)的图象的变换规律。讲授新知识点后及时进行例题讲解,让学生查漏补缺,真正把知识学懂,学通,学透,本课件按照人教版要求,符合普遍学生的学习接受能力,通过提出问题观察图片,吸引学生的注意力,以带动学生思考问题。在传递新内容上,通过图文解说,形象表达学习内容,层次分明,能让学生容易理解、学习和掌握知识。学习完新知识后,进行一段小结,巩固学生记忆。最后布置几道与这节课内容相关的习题,是为了巩固本节课内容。使学生通过本节课,能基本掌握参数φ,ω,A对函数y=Asin(ωx+φ)的图象的变换规律。 五、思考题

分析课件所使用的媒体在课堂教学实践中的作用。 本课件主要应用了几何画板软件,应用几何画板的“形象、直观”的动态效果,能很好的演示课本上的内容和几何图片,容易让学生理解掌握新概念。本节课的一些思考及练习,能很好的培养学生的发散思维,达到举一反三的目的。几何画板的重要作用就是能准确地表达几何图像。本课件适用大部分地区高中学校的课堂教学。

实验报告二 Matlab图像代数运算和几何变换

实验二Matlab图像代数运算和几何变换 一、实验目的 1、掌握不同图像类型的转换 2、掌握图像代数运算和几何变换的方法; 3、掌握灰度级插值法的实验方法。 二、实验内容 1、练习图像类型转换的相关命令(ind2rgb,mat2gray,grayslice,rgb2gray,rgb2ind,im2bw,ind2gray,dither)(p69-73); 2、练习课本6.3.2(p139-p143)图像代数运算的内容; 3、练习图像平移 (p148),图像比例变换(p153),图像旋转(p156),图像镜像变换(p158),图像切割(p160)Matlab实现例题; 4、练习灰度级插值法(p171)。 三、实验步骤和结果 1、练习图像类型转换的相关命令(ind2rgb,mat2gray,grayslice,rgb2gray,rgb2ind,im2bw,ind2gray,dither) (1)mat2gray()函数 I=imread('rice.png'); >> J=filter2(fspecial('sobel'),I); >> K=mat2gray(J); >> imshow(I); >> figure,imshow(K) (2)、grayslice()函数 >> I=imread('snowflakes.png'); >> X=grayslice(I,16); >> imview(I) imview(X,jet(16)) (3)、rgb2ind()函数 > RGB=imread('peppers.png'); >> imshow(RGB); >> figure,imshow(RGB) >> [X,map]=rgb2ind(RGB,128); >> figure,imshow(X,map) (4)、im2bw()函数 >> load trees >> BW=im2bw(X,map,0.4); >> figure,imshow(X,map) >> figure,imshow(BW) (5)、ind2gray()函数 load trees >> I=ind2gray(X,map); >> figure,imshow(X,map) >> figure,imshow(I) (6)、dither()函数 >> RGB=imread('peppers.png'); >> [X,map]=rgb2ind(RGB,256); >> I=dither(RGB,map); >> BW=dither(I); >> imshow(RGB,map); >> figure,imshow(RGB,map); >> figure,imshow(BW) Result: (1)转换后图像(2)索引色图像

实验三 遥感图像的几何校正

实验法三遥感图像的几何校正 一实验目的 通过实验操作,掌握遥感图像几何校正的基本方法和步骤,深刻理解遥感图像几何校正的意义。 二实验内容 ERDAS软件中图像预处理模块下的图像几何校正。 几何校正就是将图像数据投影到平面上,使其符合地图投影系统的过程。而将地图投影系统赋予图像数据的过程,称为地理参考(Geo-referencing)。由于所有地图投影系统都遵循一定的地图坐标系统,因此几何校正的过程包含了地理参考过程。 1、图像几何校正的途径 ERDAS图标面板工具条:点击DataPrep图标,→Image Geometric Correction →打开Set Geo-Correction Input File对话框(图1)。 ERDAS图标面板菜单条:Main→Data Preparation→Image Geometric Correction→打开Set Geo-Correction Input File对话框(图1)。 图1 Set Geo-Correction Input File对话框 在Set Geo-Correction Input File对话框(图1)中,需要确定校正图像,有两种选择情况: 其一:首先确定来自视窗(From Viewer),然后选择显示图像视窗。 其二:首先确定来自文件(From Image File),然后选择输入图像。 2、图像几何校正的计算模型(Geometric Correction Model) ERDAS提供的图像几何校正模型有7种,具体功能如下: 表1 几何校正计算模型与功能 模型功能 Affine 图像仿射变换(不做投影变换) Polynomial 多项式变换(同时作投影变换) Reproject 投影变换(转换调用多项式变换) Rubber Sheeting 非线性变换、非均匀变换 Camera 航空影像正射校正 Landsat Lantsat卫星图像正射校正 Spot Spot卫星图像正射校正 其中,多项式变换(Polynomial)在卫星图像校正过程中应用较多,在调用多项式模型时,需要确定多项式的次方数(Order),通常整景图像选择3次方。次方数与所需要的最

使用“平移”“旋转”与“轨迹”功能绘制复杂几何图形

几何画板实验报告:使用“平移”“旋转”与“轨迹”功能绘制复 杂几何图形 一、实验目的 掌握“平移”“旋转”与“轨迹”功能及其应用,能熟练将前两者结合绘制复杂图形。 二、实验内容 题目1、绘制正五边形并设置控制按钮使其绕中心旋转180度。 步骤:1、先绘制正五边形。 (1)、任意绘制一条线段,选择旋转72度,连续旋转5次(图1) (2)、连接端点,构成正五边形并得出中点O(图2) 图1 图2 2、【构造】一个圆E,【构造】圆上的半段弧GF,并【构造】弧上的一点D(图3) 图3 图4 3、设定角度DEF为标记角度,选中正五边形,点击【变换】,【旋转】,选择标记角度并以中心O为旋转中心。(图4) 4、选中点G,E选择【编辑】,【操作类按钮】,【移动】命令,得到名为“从D→G移动”的按钮,同理得名为“从D→F移动”的按钮.图5为旋转180度的图像和两个按钮。

图5 题目2、作出圆柱及过其棱上一点且与底面平行的截面。并设置截面的平行移动。 步骤:1、作出一个同心圆A,过A作水平线,在大圆上任取一点E作水平线的垂线EF,连接AE与小圆交于点G,过点G作EF的垂线,交于点H,以E为主动点,H为被动对象构造轨迹,一次选中点E和点H【构造】【轨迹】,即圆柱的底面。(图1) 图1 图2 2、将其余图形隐藏,只留下椭圆。过椭圆中点A作水平线交于G,过A点作AG的垂线AF,并标记AF向量;将G绕A点旋转180度到G’点,在椭圆上任取一点H,将H沿AF向量的方向平移到H’点,再以H为主动点,H’为被动对象构造轨迹,得到圆柱的上底面也是一个椭圆;同理将G与G’也平移上去,再连接棱,即得到圆柱;( 图2) 3、在棱G’C上任取一点N,标记G’N向量,把H按照J’N向量的方向平移到H’’点,同样以H为主动点,H’’为被动对象构造轨迹,得到截面;(图3)

计算机图形学实验报告 (2)

中南大学信息科学与工程学院 实验报告实验名称 实验地点科技楼四楼 实验日期2014年6月 指导教师 学生班级 学生姓名 学生学号 提交日期2014年6月

实验一Window图形编程基础 一、实验类型:验证型实验 二、实验目的 1、熟练使用实验主要开发平台VC6.0; 2、掌握如何在编译平台下编辑、编译、连接和运行一个简单的Windows图形应用程序; 3、掌握Window图形编程的基本方法; 4、学会使用基本绘图函数和Window GDI对象; 三、实验内容 创建基于MFC的Single Document应用程序(Win32应用程序也可,同学们可根据自己的喜好决定),程序可以实现以下要求: 1、用户可以通过菜单选择绘图颜色; 2、用户点击菜单选择绘图形状时,能在视图中绘制指定形状的图形; 四、实验要求与指导 1、建立名为“颜色”的菜单,该菜单下有四个菜单项:红、绿、蓝、黄。用户通过点击不同的菜单项,可以选择不同的颜色进行绘图。 2、建立名为“绘图”的菜单,该菜单下有三个菜单项:直线、曲线、矩形 其中“曲线”项有级联菜单,包括:圆、椭圆。 3、用户通过点击“绘图”中不同的菜单项,弹出对话框,让用户输入绘图位置,在指定位置进行绘图。

五、实验结果: 六、实验主要代码 1、画直线:CClientDC *m_pDC;再在OnDraw函数里给变量初始化m_pDC=new CClientDC(this); 在OnDraw函数中添加: m_pDC=new CClientDC(this); m_pDC->MoveTo(10,10); m_pDC->LineTo(100,100); m_pDC->SetPixel(100,200,RGB(0,0,0)); m_pDC->TextOut(100,100); 2、画圆: void CMyCG::LineDDA2(int xa, int ya, int xb, int yb, CDC *pDC) { int dx = xb - xa; int dy = yb - ya; int Steps, k; float xIncrement,yIncrement; float x = xa,y= ya; if(abs(dx)>abs(dy))

opengl立方体的简单三维交互式几何变换实验报告+代码

立方体的简单三维交互式几何变换 这个学期对opengl的学习,使我对计算机图形学的一些算法过程有了更多的了解。因为对三维图形的显示比较感兴趣,就做了立方体的简单三维交互式几何变换。 功能:键盘的方向键实现立方体的上下左右平移;A键,S键分别实现向前,向后旋转;J键,K键分别实现放大,缩小;C键退出。 程序模块: 1.该模块为绘制一个立方体。 void DrawBox() { glBegin(GL_QUADS); //前面 glColor3f(1,0,0); glVertex3f(-1.0f, -1.0f, 1.0f); // 四边形的左下 glVertex3f( 1.0f, -1.0f, 1.0f); // 四边形的右下 glVertex3f( 1.0f, 1.0f, 1.0f); // 四边形的右上 glVertex3f(-1.0f, 1.0f, 1.0f); // 四边形的左上 // 后面 glColor3f(0,1,0); glVertex3f(-1.0f, -1.0f, -1.0f); // 四边形的右下 glVertex3f(-1.0f, 1.0f, -1.0f); // 四边形的右上

glVertex3f( 1.0f, -1.0f, -1.0f); // 四边形的左下 // 顶面 glColor3f(0,0,1); glVertex3f(-1.0f, 1.0f, -1.0f); // 四边形的左上glVertex3f(-1.0f, 1.0f, 1.0f); // 四边形的左下glVertex3f( 1.0f, 1.0f, 1.0f); // 四边形的右下glVertex3f( 1.0f, 1.0f, -1.0f); // 四边形的右上// 底面 glColor3f(1,1,0); glVertex3f(-1.0f, -1.0f, -1.0f); // 四边形的右上glVertex3f( 1.0f, -1.0f, -1.0f); // 四边形的左上glVertex3f( 1.0f, -1.0f, 1.0f); // 四边形的左下glVertex3f(-1.0f, -1.0f, 1.0f); // 四边形的右下// 右面 glColor3f(0,1,1); glVertex3f( 1.0f, -1.0f, -1.0f); // 四边形的右下glVertex3f( 1.0f, 1.0f, -1.0f); // 四边形的右上glVertex3f( 1.0f, 1.0f, 1.0f); // 四边形的左上glVertex3f( 1.0f, -1.0f, 1.0f); // 四边形的左下// 左面 glColor3f(1,0,1);

多时相遥感图像配准实验报告

Harbin Institute of Technology 多时相遥感图像配准 实验报告 课程名称:遥感信息处理导论 院系:电子与信息工程学院 姓名: 学号: 授课教师: 哈尔滨工业大学

1. 实验目的 对于通过遥感平台获取的遥感数字影像,由于扫描过程中受地球曲率、地球自转、平台姿态、扫描方式等因素的影响,所获取的图像往往会产生不同程度的几何误差,这些误差如若不经处理,对图像的后续应用如分类、目标检测等会产生很大影响。本实验的目的就是利用多项式映射和重采样等方法对两幅不同时间采集的遥感图像进行几何校正处理,从而方便从配准图像中找到不同时相内发生变化的地物目标信息。 2. 实验原理 图像的配准过程主要可以分为三个过程:控制点对选取(自动或手动)、坐标映射函数拟合、映射后像素重采样。 1) 控制点对选取 对于图像匹配过程,首先要通过控制点对建立两幅图像间的坐标联系。控制点的选取有可分为自动和手动两种方式。对于自动选取,可以采用SIFT 等算法实现;对于手动选取,需要实验人员通过目测观察的方法找到不同时相的遥感图像中的相同目标,这些控制点可以是建筑物的顶点、道路等的交叉点等或其他较容易分辨的位置。 选出控制点后将这些点的坐标信息记录下来,值得注意的是所选控制点的数量、分布情况以及精度会直接影响配准结果的精度和质量。 2) 图像几何校正 图像的配准实质上就是通过图像的几何校正,将产生几何失真的图像转换为标准的数字图像。采用的方法就是通过一定的映射函数将原图像的像素坐标转换为标准图像中的坐标 (,)u f x y = (,)v g x y = 其中(,)x y 表示原图像中的像素坐标值,(,)u v 表示参考图像中的像素坐标值。 映射函数的选择可以有多种形式,一般较为简单常用的是多项式函数,以二次多项式函数为例,映射函数的具体形式为 22 01234522 012345u a a x a y a xy a x a y v b b x b y b xy b x b y ?=+++++?=+++++? 其中,05, ,a a ,05,,b b 分别表示二次多项式横纵坐标映射函数中对应项的系 数,通过选定控制点,可以将这些系数项求解出来。 假设在两幅图像中总共选择了n 对控制点,根据n 对控制点的坐标 (,)~(,)i i i i x y u v 可以得到如下两个方程组,

几何画板实验报告要点

实验一数学教学软件基本操作 一、实验目的: 二、实验内容: 1、作出三角形的垂心。 2、作出三角形的外接圆与内切圆。 外接圆 内切圆 3、验证:三角形三边的中点、三条高的垂足、垂心到三顶点的中点共圆。

4、作出两圆的内外公切线。 三、实验步骤 1、作出三角形的垂心。 步骤: ○1构造△ABC; ○2选中点A和线段BC,构造垂线; ○3同理,构造线段AB、BC上的垂线; ○4交点D即为垂心。 2、作出三角形的外接圆与内切圆。 外接圆步骤:

○1构造△ABC; ○2选中线段AB,构造中点E; ○3选中线段AB和点E,构造垂线; ○4同理构造线段AC、BC上的中垂线,交点为K; ○5选中点K、A,构造圆。 内切圆步骤: ○1构造△ABC; ○2选中线段AB、AC,构造角平分线; ○3选中AB、BC,构造角平分线,交点为D; ○4选中A、D,构造圆。 3、验证:三角形三边的中点、三条高的垂足、垂心到三顶点的中点共圆。 步骤: ○1构造△ABC; ○2选中线段AB、BC、AC分别构造中点D、E、F; ○3选中线段BC和点A构造垂线,垂足为H,同理得到垂足L、K,三条 垂线的交点为M; ○4选中点A和M构造线段,再选中线段AM构造中点O,同理得到点N、P; ○5选中点E、P、O构造过三点的弧,选中点O、D、E构造过三点的弧; 4、作出两圆的内外公切线。 外公切线步骤: ○1构造两圆C、D,圆心分别为C、D(注:圆C 的半径大于圆 D 的半径); ○2选中点C、D,构造直线CD; ○3在圆D 上任意取一点F,连接构造线段DF; ○4选中点C、线段DF,构造平行线交圆 C 于点G、P ○5选中点G、F,再构造直线GF 交直线CD 于点H; ○6选中点D、H,构造线段DH,再构造线段DH 的中点M; ○7依次选中M、D(H),接着“构造”—“以圆心和圆周上的点作圆”—“生成一个圆M 交圆 D 于点O 和N ; ○8分别构造出直线OH 和直线NH,即为所求的外公切线。 内公切线步骤: ○1构造线段FP 交直线CD 于点Q; ○2选中点C、Q,构造线段,再构造中点R; ○3依次选中点R、C(Q),构造圆交圆C 于点S、T; ○4分别构造出直线QT 和直线QS,即为所求的内公切线。 四、实验的结论及实验中存在的问题。

X-opengl立方体的简单三维交互式几何变换实验报告代码

立方体的简单三维交互式几何变换 立方体的简单三维交互式几何变换。 功能:键盘的方向键实现立方体的上下左右平移;A键,S键分别实现向前,向后旋转;J键,K键分别实现放大,缩小;C键退出。 程序模块: 1.重绘回调函数,在窗口首次创建或用户改变窗口尺寸时被调用。void reshape(int w, int h) { glViewport(0, 0, w, h);// 指定视口的位置和大小 glMatrixMode(GL_PROJECTION); glLoadIdentity(); //glFrustum(-1.0, 1.0, -1.0, 1.0, 3.1, 10.0); //gluPerspective(45,1,0.1,10.0); glOrtho(-2.0, 2.0, -2.0, 2.0, 2.0, 10.0); } 2.绘制一个立方体。 void DrawBox() { glBegin(GL_QUADS); //前面

glColor3f(1,0,0); glVertex3f(-1.0f, -1.0f, 1.0f); // 四边形的左下glVertex3f( 1.0f, -1.0f, 1.0f); // 四边形的右下glVertex3f( 1.0f, 1.0f, 1.0f); // 四边形的右上glVertex3f(-1.0f, 1.0f, 1.0f); // 四边形的左上// 后面 glColor3f(0,1,0); glVertex3f(-1.0f, -1.0f, -1.0f); // 四边形的右下glVertex3f(-1.0f, 1.0f, -1.0f); // 四边形的右上glVertex3f( 1.0f, 1.0f, -1.0f); // 四边形的左上glVertex3f( 1.0f, -1.0f, -1.0f); // 四边形的左下 // 顶面 glColor3f(0,0,1); glVertex3f(-1.0f, 1.0f, -1.0f); // 四边形的左上glVertex3f(-1.0f, 1.0f, 1.0f); // 四边形的左下glVertex3f( 1.0f, 1.0f, 1.0f); // 四边形的右下glVertex3f( 1.0f, 1.0f, -1.0f); // 四边形的右上// 底面 glColor3f(1,1,0); glVertex3f(-1.0f, -1.0f, -1.0f); // 四边形的右上glVertex3f( 1.0f, -1.0f, -1.0f); // 四边形的左上glVertex3f( 1.0f, -1.0f, 1.0f); // 四边形的左下

ENVI实验报告

一、实验目的 ENVI是一套功能齐全的遥感图像处理系统,是处理、分析并显示多光谱数据、高光谱数据 和雷达数据的高级工具。此次实习主要是学习一些关于ENVI的基本操作,如:图像预处理,影像分析,图像增强,几何校正,监督分类以及专题制图等步骤。 二、实验数据 ELEVATION_SOURCE = "GLS2000" EPHEMERIS_TYPE = "DEFINITIVE" SPACECRAFT_ID = "Landsat7" SENSOR_ID = "ETM+" SENSOR_MODE = "SAM" ACQUISITION_DATE = 2000-09-24 WRS_PATH = 144 三、实验内容 1.遥感数据下载 2.数据格式转化及多波段的合成 3.图像边框的裁剪 4.图像的镶嵌 6.图像几何校正 7.裁剪 8.监督分类 9.专题出图 四、实验步骤 1.遥感数据下载 输入地名及日期,搜索符合自己通途的数据,查看并下载

2.数据格式转化及多波段的合成 由于下载图像的格式tif格式,需要转成img格式。并将单波段融合成为多波段,这一步在erdas中完成。 tif转img 单波段融合成多波段 3.图像边框的裁剪 通过主图像窗口-tools-region?of?interest-roi?tool,然后自己在图像上定义出一块感兴趣区(实际中难于确定严格准确的裁剪界限)。 4.图像的镶嵌 Map→mosaicking→georeferenced 启动镶嵌模板 6.图像几何校正 设置参数,参数在原始数据中的txt中可以查看 启动校正模块,并利用google地球进行校正 7.裁剪 分别打开需要裁剪的图像和所在区域的shapefile文件 将矢量文件转成ROI 利用ROI裁剪图像 选择主菜单→basic tools→subset data via ROIS,选择裁剪图像 在spatial subset via ROI parameters中,选择由矢量生成的

图像处理实验报告

实验报告 实验课程名称:数字图像处理 班级:学号:姓名: 注:1、每个实验中各项成绩按照10分制评定,每个实验成绩为两项总和20分。 2、平均成绩取三个实验平均成绩。 2016年 4 月18日

实验一 图像的二维离散傅立叶变换 一、实验目的 掌握图像的二维离散傅立叶变换以及性质 二、实验要求 1) 建立输入图像,在64?64的黑色图像矩阵的中心建立16?16的白色矩形图像点阵, 形成图像文件。对输入图像进行二维傅立叶变换,将原始图像及变换图像(三维、中心化)都显示于屏幕上。 2) 调整输入图像中白色矩形的位置,再进行变换,将原始图像及变换图像(三维、中 心化)都显示于屏幕上,比较变换结果。 3) 调整输入图像中白色矩形的尺寸(40?40,4?4),再进行变换,将原始图像及变 换图像(三维、中心化)都显示于屏幕上,比较变换结果。 三、实验仪器设备及软件 HP D538、MATLAB 四、实验原理 傅里叶变换作为分析数字图像的有利工具,因其可分离性、平移性、周期性和共轭对称性可以定量地方分析数字化系统,并且变换后的图像使得时间域和频域间的联系能够方便直观地解决许多问题。实验通过MATLAB 实验该项技能。 设),(y x f 是在空间域上等间隔采样得到的M ×N 的二维离散信号,x 和y 是离散实变量,u 和v 为离散频率变量,则二维离散傅里叶变换对一般地定义为 ∑∑ -=-=+-= 101 )],( 2ex p[),(1 ),(M x N y N yu M xu j y x f MN v u F π,1,0=u …,M-1;y=0,1,…N-1 ∑∑-=-=+=101 )],( 2ex p[),(),(M x N y N uy M ux j v u F y x f π ,1,0=x …,M-1;y=0,1,…N-1 在图像处理中,有事为了讨论上的方便,取M=N ,这样二维离散傅里叶变换对就定义为 ,]) (2ex p[),(1 ),(101 ∑∑ -=-=+- = N x N y N yu xu j y x f N v u F π 1,0,=v u …,N-1 ,]) (2ex p[ ),(1 ),(101 ∑∑-=-=+= N u N v N vy ux j v u F N y x f π 1,0,=y x ,…,N-1 其中,]/)(2exp[N yv xu j +-π是正变换核,]/)(2exp[N vy ux j +π是反变换核。将二维离散傅里叶变换的频谱的平方定义为),(y x f 的功率谱,记为 ),(),(|),(|),(222v u I v u R v u F v u P +== 功率谱反映了二维离散信号的能量在空间频率域上的分布情况。 五、实验步骤、程序及结果: 1、实验步骤: (1)、编写程序建立输入图像; (2)、对上述图像进行二维傅立叶变换,观察其频谱 (3)、改变输入图像中白框的位置,在进行二维傅里叶变换,观察频谱;

遥感图像预处理实验报告

实验前准备:遥感图像处理软件认识 1、实验目的与任务: ①熟悉ENVI软件,主要是对主菜单包含内容的熟悉; ②练习影像的打开、显示、保存;数据的显示,矢量的叠加等。 2、实验设备与数据 设备:遥感图像处理系统ENVI4.4软件; 数据:软件自带数据和河南焦作市影响数据。 3、实验内容与步骤: ⑴ENVA软件的认识 如上图所示,该软件共有12个菜单,每个菜单都附有下拉功能,里面分别包含了一些操作功能。 ⑵打开一幅遥感数据 选择File菜单下的第一个命令,通过该软件自带的数据打开遥感图像,可知,打开一幅遥感影像有两种显示方式。一种是灰度显示,另一种是RGB显示。 Gray(灰度显示)RGB显示 ⑶保存数据 ①选择图像显示上的File菜单进行保存; ②通过主菜单上的Save file as进行保存

⑷光谱库数据显示 选择Spectral > Spectral Libraries > Spectral Library Viewer。将出现Spectral Library Input File 对话框,允许选择一个波谱库进行浏览。点 击“Open Spectral Library”,选择某一所需的 波谱库。该波谱库将被导入到Spectral Library Input File 对话框中。点击一个波谱库的名称, 然后点击“OK”。将出现Spectral Library Viewer 对话框,供选择并绘制波谱库中的波谱曲线。 ⑸矢量化数据 点选显示菜单下的Tools工具栏,接着选择下面的第四个命令,之后选择第一个命令,对遥感图像进行矢量化。点击鼠标左键进行区域选择,选好之后双击鼠标右键,选中矢量化区域。 ⑹矢量数据与遥感影像的叠加与切割 选择显示菜单下的Tools工具,之后点选第一个 Link命令,再选择其下面的第一个命令,之后 OK,结束程序。 选择主菜单下的Basic Tools 菜单,之后选择 其中的第二个命令,在文件选择对话框中,选择 输入的文件(可以根据需要构建任意子集),将 出现Spatial Subset via ROI Parameters 对 话框通过点击矢量数据名,选择输入的矢量数 据。使用箭头切换按钮来选择是否遮蔽不包含在 矢量数据中的像元。 遥感图像的辐射定标 1、实验目的与任务: ①了解辐射定标的原理; ②使用ENVI软件自带的定标工具定标; ③学习使用波段运算进行辐射定标。 2、实验内容与步骤: ⑴辐射定标的原理 辐射定标就是将图像的数字量化值(DN)转化为辐射亮度值或者反射率或者表面温度等

几何画板实验报告8

实验报告 姓名 学号 日期 一、实验目的 二、实验内容及步骤 1.在极坐标系中绘制θ ρcos 1?-= e ep ,其中e,p 为待定常数. 步骤: ①先做出两条垂直于x 轴正向的直线,在直线上任取两点A 和B ,度量它们纵坐标的值,分别令为e 和p. ②绘制新函数θ cos 1?-= e ep r ③拖动点A,我们可发现当10<e 时,原方程表示双曲线. 2.作出???==θ θtan sec b y a x ,θ为参数 .

步骤: ①在坐标系中做两条垂直于x 轴的直线,分别直线上任取两点A 、B ,计算这两点的纵坐标,分别用a 、b 来表示;画出单位圆O,度量DFE ∠,作为参数θ的值. ②分别计算θθtan sec b a 和,分别以它们为横、纵坐标做出点; ③以D 为主动点,()θ θtan sec b a ,为被动点,做轨迹。 3.在极坐标系中做出曲线???==) cos() sin(bt at r θ(0≤t <2π),调整a ,b 的值,得到不同的图象并给 这些图像取名字。 数字8

翅膀 四叶草

两个月牙 步骤: ①先在直角坐标系中做两条x 轴的垂线,分别在上面取两点A 和B ,度量他们的纵坐标记为a ,b 。在轴上标出点(2π,0),连接该点与坐标中心,在该线段上选中任意一点C 度量横坐标计为t 。 ②切换至极坐标系,计算)sin(t a ?和)cos(t b ?的值,分别以它们为横纵坐标绘制点,以该点为被动点,C 为主动点构造轨迹。 4. 在极坐标系中画出曲线? ??=+=t bt a r θ) sin(,()π2 0≤≤t 的图像,调整a 与b 的值得到不同的图像。 步骤: ①先在直角坐标系中做两条x 轴的垂线,分别在上面取两点A 和B ,度量他们的 纵坐标记为a ,b 。在轴上标出点(-2π,0),连接该点与坐标中心,在该线段上选中任意一点C 度量横坐标计为t 。 ②切换至极坐标系,计算)sin(t b a ?+的值,分别以)sin(t b a ?+及t 为横纵坐标做点D ,以点D 为被动点,C 为主动点构造轨迹。

相关文档
最新文档