- 浏览: 838259 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
loveseed1989:
您好,我用您的方法运行Cone.java,会给我报java.l ...
vtk学习笔记 --- 编译vtk库和java库 -
60love5:
60love5 写道首先谢谢你的解析,但你这个验证可见性的小程 ...
多线程中共享对象的可见性 -
60love5:
首先谢谢你的解析,但你这个验证可见性的小程序是存在问题的,你的 ...
多线程中共享对象的可见性 -
Gamehu520:
...
java 中的Unsafe -
shanpao1234560:
这个list不是静态的第一种情况下也会有线程安全的问题么,求指 ...
一个看似线程安全的示例
最近在学习vtk,想尝试绘制等值线,后来在网上找到一份教程:vtk培训教程,里面有讲到这个内容,在这里非常感谢这位作者的讲解与示例,可惜这份文档没有署名!
使用vtk来绘制等值线,需要使用到vtkContourFilter,它所处理的数据需要是规则网格数据,如规则的正方形网格等。
通过使用vtkContourFilter::SetValue(i,value)方法来指定绘制第几条等值线,其中等值线的值由value指定。意思就是提取网格数据中标量值为value的点,然后将其连接起来,对于一些边,vtkContourFilter会进行插值运算,计算出对应的点。也可以使用vtkContourFilter::GenerateValues(count, start, end);来生成一些列的等值线,其中count参数指定等值线的条数,而start指定第一条等值线的值,end指定最后一条等值线的值,中间等值线的值则通过计算得到。
在下面的例子中,我们首先生成网格数据的点集,其次指定网格的拓扑结构即cells,然后设置每个点的标量值,,最后通过vtlContourFile来生成等值线并最终显示出来。
在vtk中保存点集使用vtkPoints,可以使用它的InsertNextPoint(x,y,z)来插入一个点的坐标,这些点在vtkPoints内部都有对应的id,其值可以理解为这些点对应的索引值。在后面设置cell值和标量值的时候,都需要使用到这些id。
拓扑结构使用vtkCellArray来保存,其中cell信息,下面示例中使用的是多边形vtkPolygon,在创建vtkPolygon对象时,首先需要通过SetNumberOfIds(num)来指定多边形点的个数,然后通过GetPointIds().SetId(0,0);来设置这个多边形每个点对应在点集中的id。最后通过vtkCellArray.InsertNextCell将创建的多边形添加到vtkCellArray中。
标量值保存在vtkFloatArray中,通过InsertTuple1(id,value)来设置点集中对应点的标量值。
程序最终运行效果图:
其中关键代码如下:
public void build(){ //创建对象 vtkPolyData pGrid= new vtkPolyData(); //创建多边形数据 pGrid.SetPoints(buildPoints()); //设定单元类型为多边形 pGrid.SetPolys(buildPolygonCell()); //设定每个顶点的标量值 pGrid.GetPointData().SetScalars(buildScalars()); //数据映射,使用默认颜色映射表 vtkPolyDataMapper cubeMapper =new vtkPolyDataMapper(); cubeMapper.SetInput(pGrid); //设置标量值范围 cubeMapper.SetScalarRange(0,9); vtkActor cubeActor =new vtkActor(); cubeActor.SetMapper(cubeMapper); //提取轮廓线 vtkContourFilter pContourFilter=new vtkContourFilter(); //设置提取的标量值 pContourFilter.SetValue(0,5.0); pContourFilter.SetInput(pGrid); vtkPolyDataMapper pContouMapper=new vtkPolyDataMapper(); pContouMapper.SetInput((vtkPolyData)pContourFilter.GetOutput()); //禁用属性数据绘制颜色 pContouMapper.ScalarVisibilityOff(); vtkActor pContoActor = new vtkActor(); pContoActor.SetMapper(pContouMapper); pContoActor.GetProperty().SetColor(1.0,1.0,0.0); pContoActor.GetProperty().SetLineWidth(2.0); //设置图形以线框的方式显示 cubeActor.GetProperty().SetRepresentationToWireframe(); pContoActor.GetProperty().SetRepresentationToWireframe(); vtkRenderer renderer = new vtkRenderer(); renderWindow.AddRenderer(renderer); renderer.AddActor(cubeActor); renderer.AddActor(pContoActor); renderer.ResetCamera(); renderer.SetBackground(1,1,1); start(); }
源码见附件
发表评论
-
基于Oracle Streams + Oracle AQ 捕获变更,发布变更(二)
2014-11-21 22:23 3167要求:使用Oracle Streams捕获某个用户下部 ... -
基于Oracle Streams + Oracle AQ 捕获变更,发布变更(一)
2014-11-20 22:23 2717要求:使用Oracle Streams捕获某个用户下部分表 ... -
如何去掉在浏览器中打开java applet时的警告对话框
2013-08-24 12:10 6951好久没更新博客了! 最近,由于项目要求,需要将sw ... -
Android 内存泄露笔记
2013-03-05 23:10 01、大部分内存泄露都是错误的持有了Activity或者Con ... -
java 虚拟机总结 【思维导图】
2012-12-22 20:11 2060java虚拟机总结思维导图: 参考《深入理解jav ... -
Java虚拟机字节码执行引擎 【思维导图】
2012-12-22 19:51 1597java虚拟机字节码执行引擎思维导图总结: 参考《深入理 ... -
java 垃圾回收相关总结 【思维导图】
2012-12-21 19:03 3237java垃圾回收相关总结: 参考《深入理解java ... -
java并发中的延迟初始化
2012-12-12 19:17 4645在《java并发编程实战 ... -
java同步容器与并发容器
2012-12-09 18:07 4305何为同步容器:可以简 ... -
一个看似线程安全的示例
2012-12-09 14:56 4980在《java并发编程实战》第四章4.4.1节给出了一个程序示 ... -
多线程中的long和double
2012-12-08 19:26 4129在看一些代码的时候,会发现在定义long型和double型的 ... -
多线程中共享对象的可见性
2012-12-08 18:52 5062在阅读《java并发编程实战》的第三章的时候,看到书中的一个 ... -
一个快速、轻量级 Collection 库 Trove
2012-12-07 09:35 3700Trove一个快速、轻量级针对java原子类型(byte,i ... -
java 中的Unsafe
2012-12-05 22:25 32679在阅读AtomicInteger的源码时,看到了这个类:su ... -
在ubuntu10上编译Thrift0.8.0
2012-08-01 15:34 2107下载thrift0.8.0 ,地址: http:// ... -
生活小工具--记账小助手1.0发布
2012-05-31 15:08 1650因为自己平时喜欢记账,把每日的消费情况都记录下来,所以希望找 ... -
话费速查升级版v1.3发布
2012-05-04 12:47 1380前段时间开发了一个话费速查的小应用,最近一直保持每周更新一个 ... -
编译zeromq的java绑定:jzmq
2012-05-03 22:47 134931、 下载zeromq源码:http://www.ze ... -
Android软件包静默安装小应用 - 附源码
2012-04-21 20:50 12347老早之前,写了一个android软件包静默安装的应用,放在工 ... -
最方便的联通话费,余额查询软件来了! --- 联通话费速查v1.2
2012-04-12 18:01 3958软件介绍: 联通话费速查是一款针对联通 ...
相关推荐
VTK-8.2.0-cp38-cp38-win_amd64
VTK-9.0.3-cp310-cp310-win_amd64
VTK-8.1.0是安装mayavi-4.5.0+vtk81-cp36-cp36m-win_amd64.whl的基础模块,为后期numpy模块中图像的显示做铺垫。
The Visualization Toolkit (VTK) is an open-source, freely available software system for 3D computer graphics, image processing and visualization. VTK consists of a C++ class library and several ...
VTK-5.0.1-control-1.1.zip 开发三维软件必备
VTK-7.1.1-cp36-cp36m-win32
怎样使用VTK----------------------------------------------------------------------------------8 附加资源-----------------------------------------------------------------------------------------8 第2章 ...
VTK-9.0.1-cp36-cp36m-win_amd64
VTK安装全部文件,从官方网站下载的最新版本5.2
VTK的最新版本,有兴趣可以下载玩玩~~
VTK是一个开放的、面向对象的软件系统,主要功能是计算机图形学、可视化和图像处理。尽管它庞大和复杂,但它是为易学易用设计的,一旦你学会了基本的面向对象的设计和实现方法。
VTK-Designer-User-Manual
资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:vtk-8.1.0-cp36-cp36m-win_amd64.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
从事医疗软件、CAE软件等开发的小伙伴可以用作参考。文件来自互联网,鄙人在阅读的过程中增加了完整书签目录。
vtk-user-'s-guide-中文版.doc vtk-user-'s-guide-中文版.doc vtk-user-'s-guide-中文版.doc
VTK-9.0.3-cp38-cp38-win_amd64
VTK-6.1.0-vc14-64
VTK-9.0.3-cp310-cp310-win32
VTK-9.0.1-cp36-cp36m-win32