地学信息三维可视化实习报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

地学信息三维可视化实习报告

班级:

姓名:

学号:

上交日期:2016.11.16

实习一

1.利用对象图形法创建一个三维立方体,并将各顶点设置为不同的颜色

对象法是IDL5.0引入面向对象编程概念后出现的,面向对象的基础也就是对象类的使用。对象类允许编程者将数据和方法封装成一个包,称之为对象。一个对象类可以重复利用生成多个对象。IDL 的三维坐标系使用的是右手笛卡尔坐标系,与Microsoft Direct3D 的左手坐标系相区别,示意图如下。

程序:

PRO triangularprism

oWindow = OBJ_NEW('IDLgrWindow',dimension =[400,400],retain = 2) oView = OBJ_NEW('IDLgrView',viewPlane_Rect =[-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,style =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,oView

END

2.读取head.dat中的数据,进行体数据的显示,并实现切片提取操作

iTools 是IDL6.0 以后版本提供的功能强大的交互式分析工具。IDL 初学者可以利用这套智能工具快捷轻松地实现数据读入,数据分析和数据可视化,并且可以输出制作令人眩目的精美图形图像。有经验的IDL 程序员使用它,可以减少程序开发工作量,甚至可以在iTools框架的基础上创建全新的可视化应用环境。打开iVolume,在Operations →Volume →Image Plane中可以选择切片

pro head

file = 'C:\Users\siyuan\Desktop\IDL实习题\第一次课\数据\head.dat'

data = READ_BINARY(file, DATA_DIMS = [80, 100, 57])

IVOLUME, data

end

3.读取elev_t.jpg图像以及elevbin.dat中的DEM数据:

●利用直接图形法显示DEM曲面

●利用对象图形法创建曲面对象和纹理对象并进行叠加显示

pro test

demfile = 'C:\Users\siyuan\Desktop\IDL实习题\第一次课\数据

\elevbin.dat'

dem = read_binary(demfile,data_dims = [64,64])

imagefile = 'C:\Users\siyuan\Desktop\IDL实习题\第一次课\数据

\elev_t.jpg'

read_jpeg,imagefile,image

dem = congrid(dem,128,128,/interp)

device,decomposed = 0,retain = 2

window,0,title = 'dem',xsize = 800,ysize = 600

shade_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) ;计算归一化显示比例,并在各个方向平移-0.5,从而使图像居中

osurface.getproperty,xrange = xr,yrange = yr,zrange = zr

xs = norm_coord(xr)

xs[0] = xs[0] - 0.5

ys = norm_coord(yr)

ys[0] = ys[0] - 0.5

zs = norm_coord(zr)

zs[0] = zs[0] - 0.5

osurface.setproperty,xcoord_conv = xs,ycoord_conv = ys,zcoord_conv = zs

;曲面上添加纹理对象

osurface.setproperty,texture_map = oimage,color = [255,255,255] ;构建对象体系

omodel.add,osurface

opolygons = OBJ_NEW('idlgrpolygon', shading = 1, $

data = vertices, polygons = polygons, color = [255,255,255], $

相关文档
最新文档