三维图形实验报告
- 格式:doc
- 大小:310.15 KB
- 文档页数:9
SAR立体三维重建姓名: *******学号: *********班级: *************指导教师:******1实验目的1、理解基于合成孔径雷达立体像对的灰度信息进行三维重建的基本原理与方法;2、了解ERDAS IMAGINE的基本功能,熟练掌握StereoSAR模块的使用方法;3、理解SAR传感器几何模型及基于地面控制点(Ground Control Points,GCPs)几何模型精化的原理与方法;4、通过真实SAR像对的数据处理,掌握SAR立体三维重建的基本流程.2实验数据说明本实验采用ERDAS IMAGINE软件的示例数据,RADASAT影像StereoSAR_Ref。
img和StereoSAR_Match。
img,这两景影像分别拍摄于1996年9月24日和1996年9月17日。
3实验原理经过试验九的操作,使我们对InSAR提取测区DEM有了一定的掌握。
而摄影测量中我们也学习了基于立体像对制作测区三维景观图,因此在此次实验中我们利用摄影测量的原理基于SAR影像进行三维重建。
3。
1 SAR立体图像的获取立体图像在摄影测量中称为立体相对。
所谓立体相对是由不同摄站摄取的具有一定重叠的两张相片。
因此雷达立体图像也可以定义为:由天线位置探测获取的具有一定影像重叠的两幅雷达图像[1]。
雷达立体图像的获取方式有两种:同侧立体观测和异侧立体观测.前者是指飞行器沿着不同的航线飞行(两次飞行方向可以相同或者相反),雷达从地物的一侧对同一地区成像,同侧立体观测有可分为同一高度和不同高度两类;异侧立体观测是指雷达从地物的两侧分别对同一地区成像。
图 3.1-1 雷达立体图像获取方式异侧立体观测获取的雷达立体图像视差明显,基高比(摄影基线与航高之比)大,有利于提高地物目标点高程的测量精度。
但是地形起伏较大的地区,目标地物在立体像对的两幅图像上的相应影像不仅颜色差异很大,而且由于地形起伏引起的几何变形差异也很大。
实验一、三维数据分析实验目的:首先了解三维数据管理的的概念,对三维数据有一定的了解及认知后,学习对三维数据的管理、分析与应用,掌握三维数据分析运用要领。
实验内容:三维数据、三维数据的获取、3D要素分析;表面创建、表面管理;栅格表面分析、Terrain和TIN表面分析、功能性表面;ArcScene的工具条、二维数据的三维显示、三维动画。
实验过程:1.三维数据⑴三维数据是在二维数据的基础上添加了一个维度(Z坐标),用来表示特定表面位置的值。
三维数据有四种基本类型:三维点数据、三维线数据、表面数据和体数据。
在Arcgis中,把三维数据分为3D要素数据和表面数据。
⑵三维数据的获取:三维点、线数据的生成常见方法分为创建包含Z值的要素类,转换二维要素类的属性、插值shape三种;多面体数据的生成。
①三维点、线数据的生成-----创建包含Z值的要素类启动ArcCatalog,右击要创建三维要素的文件夹,在弹出的菜单栏中,选择“新建”----“Shapefile”,打开创建新Shapefile对话框。
在“名称”文本框中输入要素名称,在类型的下拉框选择面,单机编辑定义空间参考,选择WGS1984坐标系,点击确定。
图一创建三维空间坐标②三维点、线数据的生成-----转换二维要素类的属性在ArcScene中打开ArcToolbox,双击“3D Analyst工具”----“3D要素”----“依据属性实现要素转3D”,“打开依据属性实现要素转3D”对话框,输入要素设置为“point”,输出要素类设置为“point3d”,高度字段设置为“height”。
确定,得到三维点数据。
图二依据属性实现要素转3D③多面体数据的生成启动ArcScene,在右击文件夹,单机“新建”,选择“文件地理数据库”,创建“文件地理数据库”,命名为“New File Geodatabase”。
在rcToolbox,双击“3D Analyst工具”----“转换”----“由文件打开”----“导入3D文件”,选择文件后,点击“确定”。
基于OpenGL的三维图形绘制实验基于OpenGL的三维图形绘制实验⽬录实验题⽬:交互图形程序设计基础实验 (3)1.实验⽬的 (3)2.实验内容 (3)2.1 实验内容 (3)2.2 实验任务 (3)3.实验过程 (4)3.1 预处理 (4)3.3 主要函数说明 (5)3.4 过程描述 (6)3.5 运⾏截图 (7)4.实验结果 (7)5.实验体会 (7)实验题⽬:交互图形程序设计基础实验1.实验⽬的1)理解并掌握三维基本图形数据结构表⽰⽅法。
2)掌握编写OpenGL图形程序的基本⽅法.3)掌握OpenGL基本图形表⽰及绘制。
2.实验内容2.1 实验内容基于OpenGL的三维图形绘制实验⽬的是掌握图形信息的表⽰、数据的组织,在此基础上基于OpenGL绘制出三维图形。
实验内容包括OpenGL编程环境搭建、OpenGL程序结构、基本数据类型、核⼼函数等的使⽤;基本图形的绘制(点、线段、折线、闭合折线、多边形、三⾓形、三⾓扇、三⾓条带、四边形、四边形条带等)及图形属性控制(线宽、颜⾊、线型、填充样式等);对指定的若⼲三维模型进⾏建模、绘制,在⼀个程序框架下实现,提交1次程序,1份实验报告。
2.2 实验任务1、使⽤Visual C++建⽴⼀个单⽂档(SDI)程序,完成OpenGL绘制框架程序的设计。
在此基础上参照提供的资料,定义绘制函数,基于⾃定义的若⼲点坐标与颜⾊,分别绘制绘制点、线段、不闭合折线、闭合折线、多边形、三⾓形、四边形、三⾓扇、三⾓条带、四边形条带。
2、使⽤1中建⽴的程序框架,完成如下任务:(1)绘制正棱柱(底⾯多变形的边数及⾼度可以通过对话框输⼊)(2)正棱锥(底⾯多变形的边数及⾼度可以通过对话框输⼊)(3)正棱台(底⾯多变形的边数、台⾼、锥⾼可以通过对话框输⼊)注意模型坐标系的选择和顶点坐标的计算,每个图形的绘制单独写成函数。
加⼊菜单绘制三、四、五、六边的情况,其他边数情况从弹出对话框中输⼊参数,然后绘制。
实验报告实验名称:三维分形算法姓名:陈怡东学号:09008406程序使用说明:程序打开后会呈现出3次分形后的四面体,因为考虑到观察效果的清晰所以就用了3次分形作为演示。
与用户的交互:1键盘交互:分别按下键盘上的数字键1,2,3,4可以分别改变四面体的4个面的颜色。
按下字母c(不区别大小写)可以改变视图函数,这里循环切换3种视图函数:glOrtho,glFrustum,gluPerspective,但是改变视图函数后要窗口形状变化后才能显现出来按下字母键q(不区别大小写)可以退出程序2鼠标交互:打开后在绘图的区域按下鼠标左键不放便可以拖动图形的视角,这里为了展现图形的3D效果因此固定了其中一点不放,这样就可以看到3D的效果。
鼠标右击则有弹出菜单显示,其中改变颜色则是同时改变4个面的颜色,本程序中运用了8组配色方案。
改变视图函数也是上述的3种函数,这里的效果立刻显现,但是还有很多问题达不到所要的效果,希望老师能帮忙解决一下。
设计思路:分形算法:把四面体细分成更小的四面体,先找出其6个棱的中点并连接起来,这样就在4个顶点处各有一个小的四面体,原来四面体中剩下的部分应当去掉。
仿效二维的生成方法,我们对保留的四个小四面体进行迭代细分。
这样细分结束后通过绘制4个三角形来绘制每一个剩下的四面体。
交互的实现:键盘交互,即通过对按键的响应写上响应函数实现对视图和颜色的改变。
鼠标交互:通过对鼠标左右按键的实现:该部分只做了必要的介绍,具体实现见代码(附注释)分形算法:void tetra(GLfloat *a,GLfloat *b,GLfloat *c,GLfloat *d)函数实现的是绘制四面体并且给四个面绘上不同的颜色。
以区别开来,函数的实现细节见代码,有注释介绍。
void triangle3(GLfloat *a,GLfloat *b,GLfloat *c)函数用来绘制每个平面细分后的三角形。
其中顶点设置为3维坐标glVertex3fv(a);void divide_tetra(GLfloat *a,GLfloat *b,GLfloat *c,GLfloat *d,int m)细分四面体的函数实现。
SAR立体三维重建姓名: ******* 学号: ********* 班级: ************* 指导教师: ******1实验目的1、理解基于合成孔径雷达立体像对的灰度信息进行三维重建的基本原理与方法;2、了解ERDAS IMAGINE的基本功能,熟练掌握StereoSAR模块的使用方法;3、理解SAR传感器几何模型及基于地面控制点(Ground Control Points, GCPs)几何模型精化的原理与方法;4、通过真实SAR像对的数据处理,掌握SAR立体三维重建的基本流程。
2实验数据说明本实验采用ERDAS IMAGINE软件的示例数据,RADASAT影像StereoSAR_Ref.img和StereoSAR_Match.img,这两景影像分别拍摄于1996年9月24日和1996年9月17日。
3实验原理经过试验九的操作,使我们对InSAR提取测区DEM有了一定的掌握。
而摄影测量中我们也学习了基于立体像对制作测区三维景观图,因此在此次实验中我们利用摄影测量的原理基于SAR影像进行三维重建。
3.1 SAR立体图像的获取立体图像在摄影测量中称为立体相对。
所谓立体相对是由不同摄站摄取的具有一定重叠的两张相片。
因此雷达立体图像也可以定义为:由天线位置探测获取的具有一定影像重叠的两幅雷达图像[1]。
雷达立体图像的获取方式有两种:同侧立体观测和异侧立体观测。
前者是指飞行器沿着不同的航线飞行(两次飞行方向可以相同或者相反),雷达从地物的一侧对同一地区成像,同侧立体观测有可分为同一高度和不同高度两类;异侧立体观测是指雷达从地物的两侧分别对同一地区成像。
图 3.1-1 雷达立体图像获取方式异侧立体观测获取的雷达立体图像视差明显,基高比(摄影基线与航高之比)大,有利于提高地物目标点高程的测量精度。
但是地形起伏较大的地区,目标地物在立体像对的两幅图像上的相应影像不仅颜色差异很大,而且由于地形起伏引起的几何变形差异也很大。
MATLAB 及仿真技术实验报告
四、实验内容和步骤
1、实验内容
(1)在02πt ≤≤区间内,有3sin x t =,5cos y t =,3z txy =,要求:
① 以子图形式绘出t 与x ,t 与y , t 与z 以及同一标度同一幅图中的三个函数图; ② 绘出三维曲线。
02468-4
-202402468
-505
2
4
6
8
-150
-100-500501000
2
4
6
8
-150
-100-50050100
信息工程学院
3 -2
2
(2)已知
2
)
cos
cos(x
y
x
z+
+
=
绘制三维曲面图,并进行插值着色处理。
510
5
10
(3)用stem绘制离散图象:加网格线
4sin(3π/6)
x n
=+
信息工程学院
5
50
100
150
200
0.5
1
1.5
(4)播放一个直径不断变化的球体。
-1
1
-1
1
2、实验步骤
(1)分析实验内容,写出程序大致框架或完整的程序代码。
(2)进入MATLAB7.0集成环境。
(3)编辑程序并进行保存。
(4)运行程序,若有错误,修改错误后再次运行,如此反复进行到不显示出错为止。
1三维图形绘制实验报告所属课程名称 MATLAB编程与应用实验地点实验日期 2112班级学号姓名指导老师一、实验目的实现手工难以绘制的函数或实验数据的图形可视化,绘制三维图形,通过控制线型、色彩等属性控制对数据内在特征进行表现。
二、实验内容【实验过程及成果】(程序说明、实验代码、实验数据、实验结果)程序说明mesh函数用来绘制三维网格,surf函数用来绘制三维曲面图,surfl函数是具有光照效果的曲面,meshz函数绘制带底座的三维网格曲面,title进行图形标注,meshgrid(x,y)创建网格矩阵。
实验代码>> [x,y]=meshgrid(-8:.5:8);z=sin(sqrt(x.^2+y.^2))subplot(2,2,1);mesh(x,y,z);title('mesh(x,y,z)')subplot(2,2,2);meshz(x,y,z);title('meshz(x,y,z)')subplot(2,2,3);surf(x,y,z);title('surfc(x,y,z)')subplot(2,2,4);surfl(x,y,z);title('surfl(x,y,z)')实验数据>> [x,y]=meshgrid(-8:.5:8);z=sin(sqrt(x.^2+y.^2))实验结果【实验小结】(收获体会)了解了mesh、meshc、meshz、surf、surfc、surfl函数来绘制三维曲线、面,mesh函数用来绘制三维网格,而surf函数用来绘制三维曲面图,各线条之间的补面用颜色来填充,meshc函数是带等高线的三维网格曲面,meshz函数是带底座的三维网格曲面,surfc函数具有等高线的曲面和surfl函数具有光照效果的曲面。
通过学习可以基本绘制三维图形并且对三维图形有了全面的认识,可以基本利用三维曲线的基本函数plot3和三维曲线、面的函数,三维等高线的绘制等。
三位造型设计(UG课程实验报告实验一:UG NX6草图操作一、实验目的1、绘制与编辑几何图元2、草图几何约束3、内部草图与外部草图4、尺寸标注5、掌握垫片和吊钩的草图实例绘制二、实验内容和要求1、内容:上机操作,完成草图绘制2、要求:利用UG NX6草图功能绘制图形,绘制完成后分别存盘三、主要仪器设备1、计算机四、实验结果课程实验报告系部:专业:年级:三位造型设计(UG课程实验报告系部:专业:年级:实验室号:计算机号:实验时间:指导教师:成绩:实验二:UG NX6实体建模一(压盖设计)一、实验目的1、实体建模2、拉伸特征建模的步骤及相关功能3、拉伸特征建模的各参数设置4、掌握轴承压盖零件设计二、实验内容和要求1、内容:上机操作,完成压盖零件设计2、要求:利用UG NX6实体建模功能绘制图形,绘制完成后分别存盘三、主要仪器设备1、计算机四、实验结果课程实验报告系部:专业:年级:实验室号:计算机号:实验时间:指导教师:成绩:三位造型设计(UG课程实验报告系部:专业:年级:实验室号:计算机号:实验时间:指导教师:成绩:实验三:UG NX6实体建模二(轴承设计)一、实验目的1、回转特征建模步骤及相关功能2、回转特征建模参数设置3、理解布尔运算命令4、能够使用布尔运算命令设计相关零件5、掌握轴承零件设计二、实验内容和要求1、内容:上机操作,完成轴承零件设计2、要求:利用UG NX6实体建模功能绘制图形,绘制完成后分别存盘三、主要仪器设备1、计算机四、实验结果实验室号:计算机号:实验时间:指导教师:成绩:三位造型设计(UG课程实验报告系部:______________ 专业:______________________ 年级: _________________实验室号:计算机号:实验时间:指导教师:成绩:实验四:UG NX6实体建模三(弹簧设计)一、实验目的1、理解和掌握扫掠命令的使用2、扫掠特征建模步骤及其相关功能3、扫掠特征建模参数设置4、掌握弹簧设计二、实验内容和要求1、内容:上机操作,完成弹簧零件设计2、要求:利用UG NX6扫掠功能绘制图形,绘制完成后分别存盘三、主要仪器设备1、计算机四、实验结果课程实验报告系部:专业:年级:实验室号:计算机号:实验时间:指导教师:成绩:三位造型设计(UG实验五:UG NX6参考特征(三通零件设计)一、实验目的1、理解和掌握基准平面和基准坐标系2、掌握基准平面的创建3、掌握基准坐标系的创建4、掌握三通零件设计二、实验内容和要求1、内容:上机操作,完成零件设计2、要求:利用UG NX6参考特征功能绘制图形,绘制完成后分别存盘三、主要仪器设备1、计算机四、实验结果课程实验报告系部:专业:年级:实验室号:计算机号:实验时间:指导教师:成绩:三位造型设计(UG课程实验报告系部:专业:年级:实验室号:计算机号:实验时间:指导教师:成绩:实验六:UG NX6成形建模一(孔、凸台、圆锥、腔体)一、实验目的1、理解成形特征的概念2、成形特征中孔特征的设计3、成形特征中腔体征的设计4、成形特征中凸台征的设计5、成形特征参数设计&成形特征的定位二、实验内容和要求1、内容:上机操作,完成零件设计2、要求:利用UG NX0成形特征绘制图形,绘制完成后分别存盘三、主要仪器设备1、计算机四、实验结果系部:专业:年级:实验室号:计算机号:实验时间:指导教师:成绩:三位造型设计(UG课程实验报告课程实验报告系部:专业:年级:实验室号:计算机号:实验时间:指导教师:成绩:实验七:UG NX6成形建模二(凸垫、键槽、沟槽)一、实验目的1、成形特征中凸垫特征的设计2、成形特征中键槽特征的设计3、成形特征中沟槽特征的设计4、成形特征建模的应用二、实验内容和要求1、内容:上机操作,完成零件设计2、要求:利用UG NX0成形特征功能绘制图形,绘制完成后分别存盘三、主要仪器设备1、计算机四、实验结果系部:专业:年级:实验室号:计算机号:实验时间:指导教师:成绩:三位造型设计(UG课程实验报告系部:专业:年级:实验室号:计算机号:实验时间:指导教师:成绩:实验八:UG NX6特征操作一(细节特征)一、实验目的1、理解和掌握细节特征相关命令2、熟练使用细节特征命令进行建模3、细节特征中边倒圆命令设计4、细节特征中倒斜角命令设计5、细节特征中拔模命令设计二、实验内容和要求1、内容:上机操作,完成零件设计2、要求:利用UGNX6细节特征操作功能完成零件设计,绘制完成后分别存盘三、主要仪器设备1、计算机四、实验结果系部:专业:年级:实验室号:计算机号:实验时间:指导教师:成绩:三位造型设计(UG课程实验报告课程实验报告系部:专业:年级:班级:姓名:学号:实验室号:计算机号:实验时间:指导教师:成绩:实验九:UG NX6特征操作二(实例特征)一、实验目的1、理解和掌握实例特征命令2、实例特征中面倒圆命令使用3、实例特征中镜像体和镜像特征使用4、实例特征中修剪体命令使用5、实例特征中抽壳命令使用6实例特征操作7、应用体命令、实验内容和要求1、内容:上机操作,完成零件设计2、要求:利用UGNX6实例特征操作功能完成零件设计,绘制完成后分别存盘三、主要仪器设备1、计算机四、实验结果三位造型设计(UG课程实验报告系部:______________ 专业:______________________ 年级:班级:姓名:学号:实验室号:计算机号:实验时间:指导教师:成绩:实验十:UG NX6曲线操作(一)一、实验目的1、理解和掌握曲线操作2、掌握曲线的创建方法3、曲线操作的方法4、5、二、实验内容和要求1、内容:上机操作,完成曲线绘制2、要求:利用UG NX6曲线功能绘制图形,绘制完成后分别存盘三、主要仪器设备1、计算机四、实验结果三位造型设计(UG 课程实验报告班级:姓名:学号:实验室号:计算机号:实验时间:指导教师:成绩:实验^一:UG NX6曲线操作(二)、实验目的1、曲线的操作功能2、曲线实例操作3、4、5、二、实验内容和要求1、内容:上机操作,完成曲线绘制2、要求:利用UG NX6曲线功能绘制图形,绘制完成后分别存盘三、主要仪器设备1、计算机四、实验结果班级:姓名:学号:实验室号:计算机号:实验时间:指导教师:成绩:三位造型设计(UG课程实验报告实验十二:UG NX6曲面操作(一)一、实验目的1、理解曲面建模2、掌握由点构建曲面3、掌握由线构建曲面4、曲线抽取5、二、实验内容和要求1、内容:上机操作,完成曲面绘制2、要求:利用UG NX6曲面功能绘制图形,绘制完成后分别存盘三、主要仪器设备1、计算机四、实验结果系部:专业:年级:班级:姓名:学号:实验室号:计算机号:实验时间:指导教师:成绩:三位造型设计(UG课程实验报告系部:______________ 专业:______________________ 年级: _________________班级:______________ 姓名:______________________ 学号:_________________ 实验室号:_____________ 计算机号:____________________实验时间:_____________ 指导教师:____________________ 成绩: ____________实验十三:UG NX6曲面操作(二)一、实验目的1、规律延伸命令2、曲面加厚命令3、偏置曲面命令4、5、二、实验内容和要求1、内容:上机操作,完成曲面绘制2、要求:利用UG NX6曲面功能绘制图形,绘制完成后分别存盘三、主要仪器设备1、计算机四、实验结果系部:专业:年级:三位造型设计(UG课程实验报告班级:______________ 姓名:______________________ 学号:_________________ 实验室号:_____________ 计算机号:____________________实验时间:_____________ 指导教师:____________________ 成绩: ____________实验十四:UG NX6装配操作一、实验目的1、理解装配的基本概念与结构2、装配的相关约束3、装配的基本步骤4、自底向上装配5、自顶向下装配&部件剑建模的概念与使用7、爆炸视图的概念二、实验内容和要求1、内容:上机操作,完成装配模块设计2、要求:利用UG NX6装配模块完成图形装配,装配完成后分别存盘三、主要仪器设备1、计算机四、实验结果系部:专业:年级:三位造型设计(UG课程实验报告班级:姓名:学号:实验室号:计算机号:实验时间:指导教师:成绩:实验十五:UG NX6工程图一、实验目的1、理解工程图概念和重要性2、工程图纸的创建与编辑3、视图的创建4、工程图的标注方法5、工程图的修改&完成工程图的建立二、实验内容和要求1、内容:上机操作,利用工程图模块完成工程图设计2、要求:利用UG NX6工程图模块完成图形,绘制完成后分别存盘三、主要仪器设备1、计算机四、实验结果系部:专业:年级:。
实验报告模板《计算机图形学》实验报告一、实验目的及要求1.实习三维图形的坐标系之间的变换;2.三维图形几何变换;3.掌握三维图形的坐标系之间的变换算法及三维图形几何变换的原理和实现;4.实现二维图形的基本变换(平移、旋转、缩放、错切、对称、复合等);5.实现三维图形的基本变换(平移、旋转、缩放、复合等);二、理论基础在齐次坐标理论下,二维图形几何变换矩阵可用下式表示:⎪⎪⎪⎭⎫⎝⎛===ifchebgdaTnkxx kk2,1,0,)(ϕ平移变换:[x* y* 1] =[x y 1] *0000001ts⎛⎫⎪⎪⎪⎝⎭=[t*x s*y 1]比例变换:[x* y* 1]=[x y 1] *1000101m n⎛⎫⎪⎪⎪⎝⎭=[m+x n+y 1]旋转变换:在平面上的二维图形饶原点逆时针旋转Ө角,变换矩阵为[x* y* 1]=[x y 1] *cos sin0sin cos0001θθθθ⎛⎫⎪- ⎪⎪⎝⎭= [x*cosө-y*sinө]复合变换:以上各种变换矩阵都是以原点为参照点,当以任意参照点进行变换的时候,我们就要用到复合变换矩阵。
三维变换类似于二维,在画图时,把三维坐标转换为二维即可。
三、算法设计与分析二维变换:#define dx 50#define dy 100void CCGWithVCView::OnTransScale() //平移(50,100){// TODO: Add your command handler code here// AfxMessageBox(_T("Please Insert The Move Change Code!")) ;int m[4][2]={{100,50},{50,100},{150,100},{100,50}};int i;int a[2],b[2];CDC * pDC = GetDC();for(i=0;i<3;i++){a[0]=m[i][0];a[1]=m[i][1];b[0]=m[i+1][0];b[1]=m[i+1][1];DDALine(a,b, RGB(0, 200, 255), pDC);}for(i=0;i<3;i++){a[0]=m[i][0]+dx;a[1]=m[i][1]+dy;b[0]=m[i+1][0]+dx;b[1]=m[i+1][1]+dy;DDALine(a,b, RGB(0, 200, 255), pDC);}}#define h 0.1745#include<math.h>void CCGWithVCView::OnTransRotate() //旋转{// TODO: Add your command handler code here// AfxMessageBox(_T("Please Insert The Rotate Change Code!")) ;int m[4][2]={{100,50},{50,100},{150,100},{100,50}};int i;int a[2],b[2];CDC * pDC = GetDC();for(i=0;i<3;i++){a[0]=m[i][0];a[1]=m[i][1];b[0]=m[i+1][0];b[1]=m[i+1][1];DDALine(a,b, RGB(0, 200, 255), pDC);}for(i=0;i<3;i++){a[0]=m[i][0]*cos(h)-m[i][1]*sin(h);a[1]=m[i][1]*cos(h)+m[i][0]*sin(h);b[0]=m[i+1][0]*cos(h)-m[i+1][1]*sin(h);b[1]=m[i+1][1]*cos(h)+m[i+1][0]*sin(h);DDALine(a,b, RGB(0, 200, 255), pDC);}}#define k 2;#define f 2.5void CCGWithVCView::OnTransMove() //缩放{// TODO: Add your command handler code here//AfxMessageBox(_T("Please Insert The Scale Change Code!")) ;int m[4][2]={{100,50},{50,100},{150,100},{100,50}};int i;int a[2],b[2];CDC * pDC = GetDC();for(i=0;i<3;i++){a[0]=m[i][0];a[1]=m[i][1];b[0]=m[i+1][0];b[1]=m[i+1][1];DDALine(a,b, RGB(0, 200, 255), pDC);}for(i=0;i<3;i++){a[0]=m[i][0]*k;a[1]=m[i][1]*f;b[0]=m[i+1][0]*k;b[1]=m[i+1][1]*f;DDALine(a,b, RGB(0, 200, 255), pDC);}}#define n 2#define d 0void CCGWithVCView::OnTransOther(){// TODO: Add your command handler code here//AfxMessageBox(_T("Please Insert The Other Change Code!")) ;int m[4][2]={{100,50},{50,100},{150,100},{100,50}};int i;int a[2],b[2];CDC * pDC = GetDC();for(i=0;i<3;i++){a[0]=m[i][0];a[1]=m[i][1];b[0]=m[i+1][0];b[1]=m[i+1][1];DDALine(a,b, RGB(0, 200, 255), pDC);}for(i=0;i<3;i++){a[0]=m[i][0]+n*m[i][1];a[1]=m[i][1]+d*m[i][0];b[0]=m[i+1][0]+n*m[i+1][1];b[1]=m[i+1][1]+d*m[i+1][0];DDALine(a,b, RGB(0, 200, 255), pDC);}}三维变换:#include<math.h>#define dx 100#define dy 100#define dz 0void CCGWithVCView::OnTransScale() //平移(50,100){// TODO: Add your command handler code here// AfxMessageBox(_T("Please Insert The Move Change Code!")) ;int i;int p2d[6][2];int p3d[6][3]={{400,300,0},{300,400,0},{300,300,10},{275,300,0},{400,300,0},{300,300,10}};for( i=0;i<6;i++){p2d[i][0]=p3d[i][1]-p3d[i][0]/sqrt(2);p2d[i][1]=p3d[i][2]+p3d[i][0]/sqrt(2);}int a[2],b[2];CDC * pDC = GetDC();for(i=0;i<5;i++){a[0]=p2d[i][0];a[1]=p2d[i][1];b[0]=p2d[i+1][0];b[1]=p2d[i+1][1];DDALine(a,b, RGB(0, 200, 255), pDC);}for( i=0;i<6;i++){p2d[i][0]=p3d[i][1]+dy-p3d[i][0]+dx/sqrt(2);p2d[i][1]=p3d[i][2]+dz+p3d[i][0]+dx/sqrt(2);}for(i=0;i<5;i++){a[0]=p2d[i][0];a[1]=p2d[i][1];b[0]=p2d[i+1][0];b[1]=p2d[i+1][1];DDALine(a,b, RGB(0, 0, 255), pDC);}}#define k 0.1745void CCGWithVCView::OnTransRotate() //旋转{// TODO: Add your command handler code here// AfxMessageBox(_T("Please Insert The Rotate Change Code!")) ;int i;int p2d[6][2];int p3d[6][3]={{400,300,0},{300,400,0},{300,300,10},{275,300,0},{400,300,0},{300,300,10}};for( i=0;i<6;i++){p2d[i][0]=p3d[i][1]-p3d[i][0]/sqrt(2);p2d[i][1]=p3d[i][2]+p3d[i][0]/sqrt(2);}int a[2],b[2];CDC * pDC = GetDC();for(i=0;i<5;i++){a[0]=p2d[i][0];a[1]=p2d[i][1];b[0]=p2d[i+1][0];b[1]=p2d[i+1][1];DDALine(a,b, RGB(0, 200, 255), pDC);}for( i=0;i<6;i++){p2d[i][0]=p3d[i][1]*cos(k)-p3d[i][2]*sin(k)-p3d[i][0]/sqrt(2);p2d[i][1]=p3d[i][2]*cos(k)+p3d[i][1]*sin(k)+p3d[i][0]/sqrt(2);}for(i=0;i<5;i++){a[0]=p2d[i][0];a[1]=p2d[i][1];b[0]=p2d[i+1][0];b[1]=p2d[i+1][1];DDALine(a,b, RGB(0, 0, 255), pDC);}}四、程序调试及结果的分析二维:三维:五、实验心得及建议在实验过程中,尽管过程中任由许多不会的地方,而且有待于今后的提高和改进,但我加深了对书本上知识的理解与掌握,同时也学到了很多书本上没有东西,并积累了一些宝贵的经验,这对我以后的学习与工作是不无裨益的。