《地学信息三维可视化实习报告材料.doc》由会员分享,可在线阅读,更多相关《地学信息三维可视化实习报告材料.doc(10页珍藏版)》请在课桌文档上搜索。
1、实习一1. 利用对象图形法创建一个三维立方体,并将各顶点设置为不同的颜色对象法是 引入面向对象编程概念后出现的,面向对象的根底也就是对象类的使用。对象类允许编程者将数据和方法封装成一个包,称之为对象。一个对象类可以重复利用生成多个对象。IDL 的三维坐标系使用的是右手笛卡尔坐标系,与 Microsoft Direct3D 的左手坐标系相区别,示意图如下。程序:PROtriangularprism oWindow = OBJ_NEW(IDLgrWindow,dimension =400,400,retain = 2) oView = OBJ_NEW(IDLgrView,viewPlane_Rec
2、t =-1,-1,3,3,zClip = 2,-1,eye = 10) oModel = OBJ_NEW(IDLgrModel);创建多边形 oPoly = OBJ_NEW(IDLgrPolygon);设置对象层次体系结构 oView-add,oModel oModel-add,oPoly;顶点坐标 verts = 0,0,0,1,0,0,0,1,0,0,0,1;顶点顺序 connect =3,0,1,2,3,0,2,3,3,0,1,3,3,1,2,3;设置多边形顶点与关系,类型显示为线 oPoly-setproperty,data =verts, polygons = connect,sty
3、le =1;选择45 oModel-rotate ,-1,0,-1,45;绘制显示 oWindow-draw,oView;设置立方体顶点颜色 vertscolor = fix(randomu(undefinevar,3,4)*255) oPoly-setproperty, vert_color = vertsColor oWindow-draw,oView;设置立方体面显示,并渲染显示颜色 oPoly-setproperty, shading = 1,style=2 oWindow-draw,oViewEND2. 读取head.dat中的数据,进展体数据的显示,并实现切片提取操作iTools
4、是 IDL6.0 以后版本提供的功能强大的交互式分析工具。IDL 初学者可以利用这套智能工具快捷轻松地实现数据读入,数据分析和数据可视化,并且可以输出制作令人眩目的精美图形图像。有经验的 IDL 程序员使用它,可以减少程序开发工作量,甚至可以在 iTools框架的根底上创建全新的可视化应用环境。打开iVolume,在 Operations Volume Image Plane中可以选择切片proheadfile = C:UserssiyuanDesktopIDL实习题第一次课数据head.dat data = READ_BINARY(file, DATA_DIMS = 80, 100, 57)
5、IVOLUME, dataend3.读取elev_t.jpg图像以与elevbin.dat中的DEM数据:l 利用直接图形法显示DEM曲面l 利用对象图形法创建曲面对象和纹理对象并进展叠加显示程序:protest demfile = C:UserssiyuanDesktopIDL实习题第一次课数据elevbin.dat dem = read_binary(demfile,data_dims = 64,64) imagefile = C:UserssiyuanDesktopIDL实习题第一次课数据elev_t.jpgread_jpeg,imagefile,image dem = congrid(
6、dem,128,128,/interp)device,deposed = 0,retain = 2window,0,title = dem,xsize = 800,ysize = 600shade_surf,dem omodel = obj_new(idlgrmodel) oview = obj_new(idlgrview) osurface = obj_new(idlgrsurface,dem,style = 2) oimage = obj_new(idlgrimage,image,interleave = 0,/interpolate);计算归一化显示比例,并在各个方向平移,从而使图像居中
7、 osurface.getproperty,xrange = xr,yrange = yr,zrange = zr xs = norm_coord(xr) xs0 = xs0 - ys = norm_coord(yr) ys0 = ys0 - zs = norm_coord(zr) zs0 = zs0 - osurface.setproperty,xcoord_conv = xs,ycoord_conv = ys,zcoord_conv = zs;曲面上添加纹理对象 osurface.setproperty,texture_map = oimage,color = 255,255,255;构建
8、对象体系 omodel.add,osurface opolygons = OBJ_NEW(idlgrpolygon, shading = 1, $ data = vertices, polygons = polygons, color = 255,255,255, $ texture_coord=texure_coordinates,texture_map=oimage,/texture_interp) omodel - add, opolygons & omodel - ROTATE, 1, 0, 0, -90 omodel - ROTATE, 0, 1, 0, 30 & xobjview,
9、 omodel, /blockend实习二1.绘制函数,其中的网格曲面图程序:prosurface myvalue=(findgen(100)-50)* x=rebin(myvalue,100,100,/sample) y=rebin(reform(myvalue,1,100),100,100,/sample) z=-(x2+y2-2)*exp(-(x2+y2)/2)window,title=laplace of gaussiansurface,z,x,yend图片:2.读取head.dat中的三维动画数组,播放该动画,并存储该动画的像素映射图程序:pro catoonOPENR,unit,F
10、ILEPATH(head.dat,SUBDIRECTORY=examples,data),/GET_LUNprotestopenr,unit,filepath(C:UserssiyuanDesktopIDL实习题第一次课数据head.dat),/get_lun h=bytarr(80,100,57,/nozero)readu,unit,hclose,unitxinteranimate,set=80,100,57,/showloadfor j=0,56doxinteranimate,frame=j,image=h*,*,jxinteranimate,50,/keep_pixmapsend图片:3
11、.载入avhrr.png中的数据,并加以显示 将其转换到“Interrupted Goode投影坐标系下,并用iimage命令显示 将第一问中得到的地图转换到“Mollweide投影坐标系下,并用iimage命令显示protest file= C:UserssiyuanDesktopIDL实习题第一次课数据avhrr.png data=read_png(file,r,g,b) red0=rebin(rdata,360,180) green0=rebin(gdata,360,180) blue0=rebin(bdata,360,180)iimage,red=red0,green=green0,b
12、lue=blue0,dimensions=500,600,view_grid=1,3 smap=map_proj_init(interrupted goode)red1=map_proj_image(red0,map_structure=smap,mask=mask,uvrange=uvrange,xindex=xindex,yindex=yindex) green1=map_proj_image(green0,xindex=xindex,yindex=yindex) blue1=map_proj_image(blue0,xindex=xindex,yindex=yindex)iimage,r
13、ed=red1,green=green1,blue=blue1,alpha=mask*255b,/view_next mapstruct = map_proj_init( mollweide, /gctp ) red2 = map_proj_image( red1, uvrange, image_structure=smap,xindex=xindex2,yindex=yindex2) green2=map_proj_image(green1,xindex=xindex2,yindex=yindex2) blue2=map_proj_image(blue1,xindex=xindex2,yindex=yindex2)iimage,red=red2,green=green2,blue=blue2,alpha=mask*255b,/view_nextend