上一节课内容回顾 2.1 Python概要 2.2 Python 快速入门

Slides:



Advertisements
Similar presentations
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
Advertisements

Tool Command Language --11级ACM班 金天行.
第三章 数据类型和数据操作 对海量数据进行有效的处理、存储和管理 3.1 数据类型 数据源 数据量 数据结构
上一节课内容回顾 VTK: A Tutorial, 介绍VTK的基本内容 1 What is VTK? 2 VTK图形模型
PRESENTED BY OfficePLUS
2-7、函数的微分 教学要求 教学要点.
在PHP和MYSQL中实现完美的中文显示
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
Hadoop I/O By ShiChaojie.
Overview of Python Visualization Tools
武汉纺织大学传媒学院 cm.wtu.edu.cn
第二讲 搭建Java Web开发环境 主讲人:孙娜
Computer Graphics 计算机图形学基础 张 赐 Mail: CSDN博客地址:
存储系统.
把COM口设置到没有使用的 COM1 – COM4
大学计算机基础 典型案例之一 构建FPT服务器.
管理信息结构SMI.
走进编程 程序的顺序结构(二).
辅导课程六.
上一节课内容回顾 第十一讲 科学计算可视化系统和工具 可视化系统分类 专用可视化工具 通用可视化系统.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
上一节课内容回顾 4.1 可视化数据类型 4.2 科学数据管理 4.3 科学数据格式 4.4 图形图像数据格式 4.5 VTK中的数据表示.
数学模型实验课(三) 插值与三维图形.
数据挖掘工具性能比较.
PaPaPa项目架构 By:Listen 我在这.
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
Windows 7 的系统设置.
POWERPOINT TEMPLATE HI.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
第七章 操作符重载 胡昊 南京大学计算机系软件所.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
三:基于Eclipse的集成开发环境搭建与使用
程序设计工具实习 Software Program Tool
SOA – Experiment 2: Query Classification Web Service
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
专题作业.
C语言程序设计 主讲教师:陆幼利.
微机系统的组成.
$9 泛型基础.
产品推广 PRODUCT PROMOTION PRESENTED BY OfficePLUS.
第四章 团队音乐会序幕: 团队协作平台的快速创建
VisComposer 2019/4/17.
商业分析平台-语义元数据 用友集团技术中心 边传猛 2013年 11月 06日.
姚金宇 MIT SCHEME 使用说明 姚金宇
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
iSIGHT 基本培训 使用 Excel的栅栏问题
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
LOGIX500软件入门 西安华光信息技术有限公司 2008年7月11日.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
VRP教程 2011.
波形平均和叠加分析指南 上海骐驰仪器有限公司 Shanghai Qichi Instruments Co. Ltd.
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Python 环境搭建 基于Anaconda和VSCode.
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
数据表示 第 2 讲.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
入侵检测技术 大连理工大学软件学院 毕玲.
百万行、千万行数据查询教程 老黄牛.
Presentation transcript:

上一节课内容回顾 2.1 Python概要 2.2 Python 快速入门 (1)基本的运算式(int,long,float,complex) (2)基本数据类型与操作(String,List,Tupe,Dictionary) (3)函数 def myFunction(...): (4)类 class myClass(...): (5)控制流程 If else; while :; for .. in () : (6)模块 py pyc pyo

上一节课内容回顾 2.1 Python安装 在http://iee.pku.edu.cn/lesson/eiv下,有python的安装文件: python-2.5.msi 执行 python-2.5.msi 进行安装; 设置路径python25和python25\dlls到PATH中。 2.2 Python 相关网站 中文PYTHON论坛 www.linuxforum.net PYTHON主站点 www.python.org 2.3 Python程序的编辑与运行 使用任何文本编辑程序都可编写python程序。保存为*.py 在DOS提示符下输入python *.py即可运行,或在IDLE中打开*.py文件,运行即可。另外,如果是2000或xp,可把*.py和python.exe关联起来,然后输入*.py或鼠标直接Click运行。

上一节课内容回顾 关于函数的缺省参数: print '----函数func1的结果----' def func1(a, b=[]): b.append(a) return b def func2(a, b=None): if( b == None ): b=[] print '----函数func1的结果----' print func1(1) print func1(2) print func1(3) print print '----函数func2的结果----' print func2(1) print func2(2) print func2(3) ----函数func1的结果---- [1] [1, 2] [1, 2, 3] ----函数func2的结果---- [1] [2] [3]

上一节课内容回顾 def func1(a, b=[]): 函数func1的参数b带有缺省值[],这意味着python在生成函数对象func1时,自动为参数b生成一个缺省列表对象[].这个对象本身是不能改变的,任何时候以缺省参数调用func1时都是访问的该列表对象。列表不变,但列表的内容却是可变的。 def func2(a, b=None): 函数func2的参数b带有缺省值None,这意味着python在生成函数对象func2时,自动为参数b生成一个缺省对象None.这个对象本身时不能改变的,任何时候以缺省参数调用func2时都是访问的该空对象。

本节课内容 VTK: A Tutorial, 介绍VTK的基本内容 1 What is VTK? 2 VTK图形模型 3 VTK可视化模型

有vtk 5.0版已编译好的安装文件:VTK.ZIP 把VTK.ZIP解压到目录python25\下。 在http://iee.pku.edu.cn/lesson/eiv, 有vtk 5.0版已编译好的安装文件:VTK.ZIP 把VTK.ZIP解压到目录python25\下。 (2) VTK的主站点 在www.vtk.org 可在该站点上下载最新版的源代码、特定平台的二进制代码、例子、数据和文档等。

VTK 是几个较为广泛使用的可视化系统之一。AVS 是商用系统,IBM ’s Data Explorer (DX)原先为商用系统,目前已转为开放源代码系统并改名为OpenDX.其它还有NAG Explorer 4 and Template Graphics Amira. VTK是一个通用可视化系统, 已被许多大学和研究机构采用,作为教学和研究工具。许多公司也在其基础上开发了各种可视化系统,包括医学可视化,体可视化,石油勘探,声学系统,流体系统,有限元分析,表面重构等。

3.1 What is VTK? 开放源代码、可移植 (WinTel/Unix)、面向对象的3D计算 机图形,可视化,和图像处理系统; 以 C ++语言实现,支持Tcl、Python和Java语言; 支持复杂应用程序开发,应用程序快速原型开发; 支持多种GUI开发环境,如Tk 、X/Motif、MFC、wxWidgets 。 提供数据表达类型,包括无结构点集,多边形数据,图像,体元,结构 格网,正交格网,以及无结构格网等. 通过 readers/import以及writers/export和其它程序交换数据。 提供数百个数据处理器处理各种数据,从图像变换到三角网构建. VTK绘制模式支持2D、多边形、体元和纹理绘制,以及它们的各 种组合。

3.2 VTK结构 3.2.1 VTK 在API访问接口上包括两个主要部分: C++实现的核心层 自动生成的接口层,包括Tcl、Java和Python.

C++实现的核心层: 数据结构、算法和对计算时间要求高的系统函数在C++核心层中实现。 核心层中采用对象工厂和虚拟函数等提高系统可移植性以及可扩展性。 VTK在核心层独立于任何GUI,不依赖于某一特定的窗口系统。应用程序开发者能很方便地把VTK插入到自己开发的系统中。 VTK通过抽象的图像模型实现图形的可移植性。

自动生成的接口层: 核心层提供速度和效率,接口层提供的是灵活和可扩展能力。 例如使用GUI原型开发工具如Tcl/Tk, Python/Tk, Python/wxPython, 或 Java AWT可进行专业应用程序的快速开发。

3.2.2 VTK内部组成 VTK内部包括两个主要的子系统 —图形模型子系统和可视化管道子系统。 (1)图形模型子系统 图形模型是建立在图形语言(如OPENGL)基础上的抽象层,提供跨平台的可移植性。 在1993年, 不同的计算机平台有各自的图形语言: XGL for Sun, Starbase for Hewl tt-Packard, gl for Silicon Graphics. 为了实现图形的平台与设备无关,提出了图形模型. 图形模型中的对象采用电影工业中的名称命名。灯光、相机、演员和道具是 用户创建场景所使用的类。通过抽象图形模型,3D多边形绘制(lights,cameras,actors)和体绘制以及其它绘制方式就有了一致的访问接口。

绘制窗口和绘制器: 可视化具体的数据前,必须在计算机屏幕上打开一个绘制窗口。vtkRenderWindow是一个或多个绘制器在其上进行绘制的窗口的抽象基类。直接调用vtkRenderWindow 可以自动生成所在平台上与设备相关的窗口子类。 vtkRenderWindow是vtkRenderer对象的容器对象。多个vtkRenderer对象可以平铺在一个vtkRenderWindow 中,从而创建复合的可视化系统。

下面例子把两个绘制器放在一个绘制窗口中。每一个有不同的背景颜色: from vtk import * renWin =vtkRenderWindow() renWin.SetSize( 600, 300) ren1=vtkRenderer() ren1.SetViewport( 0.0, 0.0, 0.5, 1.0) ren1.SetBackground( 0.8, 0.4, 0.2) renWin.AddRenderer( ren1) ren2 =vtkRenderer() ren2.SetViewport( 0.5, 0.0, 1.0, 1.0) ren2.SetBackground( 0.1, 0.2, 0.4) renWin.AddRenderer( ren2) renWin.Render() 运行

交互器: 一般,我们使用鼠标控制场景中的相机位置和方向,以及其它道具。vtkRenderWindowInteractor提供交互功能。 iren=vtkRenderWindowInteractor() iren.SetRenderWindow(renWin) iren.Initialize() iren.Start()

道具, 映射器,和特性 道具是被加到绘制器中创建场景的对象。 vtkProp是所有 2D和3D道具的抽象基类,包含可见性、方向、大小和位置信息。 道具与映射器及特性对象关联. 映射器引用输入数据对象并知道如何绘制该输入对象. 特性对象包含绘制参数,如颜色和材质等.

绘制3D 几何数据 vtkActor是在场景中绘制3D几何数据的 vtkProp道具类的子类。 演员类对象自动创建缺省的vtkProperty对象,但要求用户自己创建vtkMapper子类。根据几何特性的不同,从vtkDataSetMapper或vtkPolyDataMapper中选择一个. 如果数据是用vtkPolyData表示的,包含点,线,和多边形,则使用 vtkPolyDataMapper,否则使用vtkDataSetMapper。

下例创建一个立方体: cubeData=vtkCubeSource() cubeMapper=vtkPolyDataMapper() cubeMapper.SetInput(cubeData.GetOutput()) cubeActor=vtkActor() cubeActor.SetMapper(cubeMapper) Ren1.AddProp(cubeActor) Ren1.ResetCamera() renWin.Render() 运行 由于vtkCubeSource对象是多边形数据,使用vtkPolyDataMapper绘制数据,ResetCamera()把相机对准数据

旋转与改变颜色: cubeActor.RotateX( 30.0) cubeActor.RotateY( 20.0) cubeActor.GetProperty().SetColor( 1.0, 0.7, 0.7) renWin Render 使用演员的GetProperty()访问自动创建的特性对象。 运行ch3\cubecolor.py

3D体数据绘制 vtkImageData是vtkDataSet的子类,可表示1D、2D和3D图像数据。作为vtkDataSet的子类,vtkImageData可用vtkActor表示,并可用 vtkDataSetMapper进行绘制。在3D下, vtkImageData数据被看作体元,相应的,它就可用vtkVolume表示,并用 vtkVolumeMapper的子类绘制. VTK目前支持三种类型的体绘制 —光线跟踪,2D纹理映射,以及VolumePro图形卡.

下例中,首先读入一个3D结构数据,然后使用vtkVolumeTextureMapper2D绘制: negReader=vtkSLCReader() negReader.SetFileName( “neghip.slc”) negMapper=vtkVolumeTextureMapper2D() negMapper.SetInput(negReader.GetOutput()) 体绘制最困难的是定义转换函数,把标量值转成颜色和透明度。 negOpacity=vtkPiecewiseFunction() negOpacity.AddPoint(0 ,0.0) negOpacity.AddPoint(255, 0.2) negColor=vtkColorTransferFunction() negColor.AddRGBPoint( 64, 1.0, 0.0, 0.0) negColor.AddRGBPoint( 128, 0.0, 0.0, 1.0) negColor.AddRGBPoint( 196, 0.0, 1.0, 0.0)

创建体元特性和体元道具: negProperty=vtkVolumeProperty() negProperty.SetColor( negColor) negProperty.SetScalarOpacity(negOpacity) negVolume = vtkVolume() negVolume.SetMapper(negMapper) negVolume.SetProperty(negProperty) ren2.AddProp(negVolume) ren2.ResetCamera() renWin.Render() 运行

几何与体元的混合: VTK在一个场景中可以混合多个演员和体元进行绘制。下例,多边形和体元混合在一起。 posReader=vtkPolyDataReader() posReader.SetFileName(“poshipsurface.vtk”) posMapper=vtkPolyDataMapper() posMapper.SetInput(posReader.GetOutput()) posActor=vtkActor() posActor.SetMapper( posMapper ) ren2.AddProp( posActor ) renWin.Render() 运行

2D数据绘制 除了3D几何和体元数据,VTK能够可视化2D数据,如几何,图像,和文本。演员,映射器,和特性同样适用于2D数据。下例把2D数据和3D数据混合绘制。vtkActor2D表示场景中的标题, vtkTextMapper绘制文本数据, vtkActor2D自动创建vtkProperty2D对象。 titleMapper=vtkTextMapper() titleMapper.SetInput(“This is a Pink Cube ”) titleMapper.GetTextProperty().SetJustificationToCentered() titleActor=vtkActor2D() titleActor.SetMapper( titleMapper) titleActor.GetProperty().SetColor( 1, 1, 0) pc=titleActor.GetPositionCoordinate() pc.SetCoordinateSystemToNormalizedViewport() Pc.SetValue( 0.5, 0.92) ren1.AddProp(titleActor) renWin.Render() 运行

2D数据常用于注记,VTK提供了一些对象,能够把多个2D 演员和映射器组合成一个2D演员。例如, vtkScalarBarActor 把文本和2D多边形组合成图例: scalarBar = vtkScalarBarActor() scalarBar.SetLookupTable( negColor ) scalarBar.SetTitle(“Density”) sPC=scalarBar.GetPositionCoordinate() sPC.SetCoordinateSystemToNormalizedViewport() sPC.SetValue(0.8, 0.1) ren2.AddProp( scalarBar) renWin.Render() 运行

灯光, 相机 VTK应用程序不需要显式创建vtkLight 或 vtkCamera。如果没有创建,系统会自动创建。从绘制器可以修改位置、焦点以及视场等。相机包含一些方法,通过它们可调整位置,旋转等,如Azimuth(),Elevation(),Roll(),Pitch(),and Yaw()。 cam=ren2.GetActiveCamera() cam.Azimuth( 20.0) cam.Elevation( 10.0) renWin.Render() 运行

灯光缺省是白光,位置和焦点缺省情况下和相机一致。下例加入第二个光源,绿色。 light = vtkLight() light.SetFocalPoint( 0.0, 0.0, 0.0) light.SetPosition( 1.0, 0.0, 0.0) light.SetColor( 0.0, 1.0, 0.0) light.SetIntensity( 0.5) ren2.AddLight(light) renWin.Render() 运行

(2) VTK可视化管道 VTK 数据处理管道把数据变换成可由图形子系统绘制的形式,或 变换成其它形式,以待管道的后续处理。例如, 读入离散点,通过三角化创建多边形,使用面绘制显示mesh面等构成一个数据处理管道。 管道,也叫做可视化网络,通过连接处理对象和数据对象构成。数据对象提供对数据的访问,处理对象操作数据对象。在实现上,连接通过 SetInput()/GetOutput()方法实施: aFilter.SetInput(bFilter.GetOutput()) Filters创建与它的输出类型一致的内部数据对象。只有输出与输入类型匹配的连接能够成立。上例中,bFilter的输出类型和aFilter的输入类型必须一致。类型检查可在编译时或运行时进行。

一旦管道构建起来,Filters则只有在内部状态改变了或它的输入数据改变了才能重新执行。 VTK 采用分布式隐含更新方法控制管道的运行。每个对西那个管理一个内部时间标记,只有过时的对象才能重新运算。

数据对象: VTK一般把数据表示成场数据,数据集是带有拓扑和几何结构的数据对象。除了结构,数据集还附带有属性数据。属性数据包括:标量,矢量,张量,法向,纹理坐标,以及场数据。

处理对象: VTK提供了数百个处理对象。其中多数只处理一种数据类型(如图像处理对象)。一些处理对象如vtkContourFilter 接受一种类型的数据输入,输出另一种类型的数据。 处理对象一般被称为Filters。VTK把处理对象分为三类:源处理对象, 过滤器,和映射器。 源处理对象没有VTK数据输入,但产生一到多个输出,如读入器。 过滤器接受一到多个输入,产生一到多个输出。 映射器是管道的终点, 它或者和图形系统耦合在一起,或者把数据写到磁盘或另一管道。

例子: 读取数字化的多边形数据, 然后简化,用Laplacian 光滑减少面噪声,生成面法线,修饰表面: 读多边形数据: Reader=vtkBYUReader() Reader.SetGeometryFileName( “fran.g ”) 创建管道,由decimator,smoother,和 normal generator组成。 Deci=vtkDecimatePro() Deci.SetInput(reader.GetOutput()) Deci.SetTargetReduction( 0.9) Deci.PreserveTopologyOn() Smoother=vtkSmoothPolyDataFilter() Smoother.SetInput(deci.GetOutput())

Normals=vtkPolyDataNormals() Normals.SetInput(smoother.GetOutput()) Normals.SetFeatureAngle( 60 ) mapper = vtkPolyDataMapper() Mapper.SetInput(normals.GetOutput()) fran = vtkActor() Fran.SetMapper(mapper) Fran.GetProperty().SetColor( 1, 0.49, 0.25) ptMask = vtkMaskPoints() ptMask.SetInput(normals.GetOutput()) ptMask.SetOnRatio( 10) ptMask.RandomModeOn() cone = vtkConeSource() Cone.SetResolution( 6)

Transform=vtkTransform() Transform.Translate( 0.5, 0.0, 0.0) transformF =vtkTransformPolyDataFilter() transformF.SetInput(cone.GetOutput()) transformF.SetTransform( transform ) Glyph.vtkGlyph3D() Glyph.SetInput(ptMask.GetOutput()) Glyph.SetSource(transformF.GetOutput()) Glyph.SetVectorModeToUseNormal() Glyph.SetScaleModeToScaleByVector() Glyph.SetScaleFactor(0.004) spikeMapper = vtkPolyDataMapper() spikeMapper.SetInput(glyph.GetOutput()) spikeActor = vtkActor() spikeActor.SetMapper(spikeMapper) spikeActor.GetProperty().SetColor( 0, .79, .34)

ren3 =vtkRenderer() renWin2=vtkRenderWindow() renWin2.AddRenderer( ren3) Iren2=vtkRenderWindowInteractor() Iren2.SetRenderWindow( renWin2) Ren3.AddActor( fran) Ren3.AddActor( spikeActor) renWin2.Render() 运行

第一套 作业要求 : 一 创建交互器和交互窗口                a 创建1个交互器vtkRenderWindowInteractor;             b 创建1个绘制窗口vtkRenderWindow;             c 在上述绘制窗口中,创建3个绘制器vtkRenderer。 二 绘制内容             1 在第一个绘制器中: 绘制一个立方体cube和一个标题如“This is a cube”;             2 在第二个绘制器中: 在1的基础上,改变缺省灯光的颜色为绿色,并改变缺省相机的方位角;            3 在第三个绘制器中: 绘制一个图例,颜色由黄色变到蓝色,范围从100到200 ; 三 提交方式:         通过email发到xuean@iee.pku.edu.cn

下一节课内容: 4.1 可视化数据类型 4.2 科学数据管理 4.3 科学数据格式 4.4 图形图像数据格式 4.5 VTK中的数据对象

网格数据: 笛卡儿网格 规整网格 矩形网格 结构网格 非结构网格 曲线网格 块结构网格 混合结构网格 散乱点

科学数据格式: HDF格式 CDF和NetCDF

VTK中的数据对象: vtkDataObject vtkPiecewiseFunction vtkDataSet vtkImageData vtkStructuredPoints vtkImageCanvasSource2D vtkPointSet vtkPolyData vtkStructuredGrid vtkUnstructuredGrid vtkRectilinearGrid vtkDataSetAttributes vtkPointData vtkCellData vtkFieldData vtkAttributeData

vtkCell vtkHexahedron vtkLine vtkPixel vtkPolyLine vtkPolyVertex vtkPolygon vtkQuad vtkTetra vtkTriangle vtkTriangleStrip vtkVertex vtkVoxel vtkWedge vtkPyramid