- 浏览: 848120 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
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 3216要求:使用Oracle Streams捕获某个用户下部 ... -
基于Oracle Streams + Oracle AQ 捕获变更,发布变更(一)
2014-11-20 22:23 2806要求:使用Oracle Streams捕获某个用户下部分表 ... -
如何去掉在浏览器中打开java applet时的警告对话框
2013-08-24 12:10 6999好久没更新博客了! 最近,由于项目要求,需要将sw ... -
Android 内存泄露笔记
2013-03-05 23:10 01、大部分内存泄露都是错误的持有了Activity或者Con ... -
java 虚拟机总结 【思维导图】
2012-12-22 20:11 2098java虚拟机总结思维导图: 参考《深入理解jav ... -
Java虚拟机字节码执行引擎 【思维导图】
2012-12-22 19:51 1689java虚拟机字节码执行引擎思维导图总结: 参考《深入理 ... -
java 垃圾回收相关总结 【思维导图】
2012-12-21 19:03 3289java垃圾回收相关总结: 参考《深入理解java ... -
java并发中的延迟初始化
2012-12-12 19:17 4708在《java并发编程实战 ... -
java同步容器与并发容器
2012-12-09 18:07 4365何为同步容器:可以简 ... -
一个看似线程安全的示例
2012-12-09 14:56 5083在《java并发编程实战》第四章4.4.1节给出了一个程序示 ... -
多线程中的long和double
2012-12-08 19:26 4209在看一些代码的时候,会发现在定义long型和double型的 ... -
多线程中共享对象的可见性
2012-12-08 18:52 5158在阅读《java并发编程实战》的第三章的时候,看到书中的一个 ... -
一个快速、轻量级 Collection 库 Trove
2012-12-07 09:35 3769Trove一个快速、轻量级针对java原子类型(byte,i ... -
java 中的Unsafe
2012-12-05 22:25 32764在阅读AtomicInteger的源码时,看到了这个类:su ... -
在ubuntu10上编译Thrift0.8.0
2012-08-01 15:34 2160下载thrift0.8.0 ,地址: http:// ... -
生活小工具--记账小助手1.0发布
2012-05-31 15:08 1762因为自己平时喜欢记账,把每日的消费情况都记录下来,所以希望找 ... -
话费速查升级版v1.3发布
2012-05-04 12:47 1443前段时间开发了一个话费速查的小应用,最近一直保持每周更新一个 ... -
编译zeromq的java绑定:jzmq
2012-05-03 22:47 135521、 下载zeromq源码:http://www.ze ... -
Android软件包静默安装小应用 - 附源码
2012-04-21 20:50 12424老早之前,写了一个android软件包静默安装的应用,放在工 ... -
最方便的联通话费,余额查询软件来了! --- 联通话费速查v1.2
2012-04-12 18:01 4049软件介绍: 联通话费速查是一款针对联通 ...
相关推荐
VTK-9.1.0-cp38-cp38-win_amd64.zip 是针对Python 3.8版本且适用于64位Windows系统的VTK库的压缩包。这个版本的VTK提供了对现代计算机图形硬件的充分利用,支持复杂的三维渲染和交互操作。 "whl" 文件格式是Python...
3. **可视化算法**:VTK集成了多种可视化算法,如体绘制、表面绘制、线框绘制、等值线绘制等,能够根据数据的特性和需求选择合适的可视化方式。 4. **交互性**:VTK支持用户与三维场景的交互,如旋转、平移、缩放...
VTK-8.2.0-cp36-cp36m-win_amd64.zip 是一个专为基于Windows x64平台设计的Python 3.6版本的VTK库压缩包。它包含了Python接口的VTK库,允许开发者在Python环境中进行高效的数据可视化。 此压缩包中的“VTK-8.2.0-cp...
VTK-8.2.0-cp38-cp38-win_amd64
vtk-9.3.0-cp310-cp310-win_amd64.whl
VTK-9.0.1-cp36-cp36m-win_amd64.whl
vtk-9.3.1-cp310-cp310-win_amd64.whl
VTK-8.1.0是安装mayavi-4.5.0+vtk81-cp36-cp36m-win_amd64.whl的基础模块,为后期numpy模块中图像的显示做铺垫。
vtk-9.3.1-cp312-cp312-win_amd64.whl
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-9.1.0-cp36-cp36m-win_amd64
适用平台:windows x64文件格式:whl安装方式:切换到whl路径,执行pip install whl文件名
VTK-7.1.1-cp36-cp36m-win32
VTK-9.1.0-cp37-cp37m-win_amd64.whl
VTK-5.0.1-control-1.1.zip 是一个特定版本的VTK控制模块的压缩包,适用于开发三维软件。在VTK中,"control"通常指的是用户界面和交互部分,它允许用户与三维可视化场景进行交互。 VTK的核心功能包括数据处理、几何...
**Python库vtk-9.0.3-cp39-cp39-macosx_11_0_arm64.whl详解** `vtk-9.0.3-cp39-cp39-macosx_11_0_arm64.whl`是一个针对Python开发的库,特别适用于在MacOS系统上运行,特别是搭载了Apple M1芯片的新型号(arm64架构...
VTK-9.1.0-cp310-cp310-win_amd64.whl
VTK-7.1.1-cp35-cp35m-win_amd64.whl
VTK-9.0.1-cp36-cp36m-win_amd64