赞
踩
建立数据集的方式多种多样,我们可以用编程的方式从无到地建立起一个数据集,也可以利用vtk的io功能直接从文件读取数据集。
我们首先看编程的方式,再说读文件的方式。
4.1 编程方式建立数据集
在开始建立数据集之前,我们一定要清楚:数据集有六种(请见前篇介绍),我们即将建立的这个数据集最符合哪一种?之后,我们就使用对应的vtk数据集类,运用相关api,开始建立数据集。
无论我们使用何种数据集类型,如何编程,最终的目的都是一样的:直接或者间接地指明这个数据集的几何结构、拓扑结构,和数据属性(Data Attribute)。具体来说,就是:
①. 在正交坐标系空间中,用一系列3维坐标点表示出数据集的几何结构。
②. 将这些点以某方式联系起来,从而在这个空间中划分出若干基元,表示出数据集的拓扑结构。
③. 在①步骤中指定的3维坐标点,或者②步骤中划分出的基元上,绑定有物理意义的数据(Data Attributes),这些数据可以是标量、矢量、或是张量
4.1.1 Demo1:麻雀虽小五脏俱全 -- 四个点,一个基元,也是数据集:)
对于demo来说,当然是越简单越好,越能说清楚事情越好。于是我们将建立一个仅由四个点的组成的数据集,它唯一的基元便是这四个点围起来形成的。那它属于那种数据集呢?进一步分析一下:这个数据集实际上就是一个四边形,也就是说,它是一个最基本的图元(参考前篇3.1.2),再回顾一下PolyData,它的定义是“a collection of graphics primitives”,即它是图元的集合,那我们这个数据集就是polyData了。
ps:请多注意下polyData这类数据集,虽然它的几何、拓扑结构都是不规则的,但是它本身就是由图元组成,而图元是可以直接渲染的。所以这种数据集实际上是最简洁、高效的数据集。
全部代码如下所示,关键地方请看注释。
- package linke;
-
- import vtk.vtkActor;
- import vtk.vtkCellArray;
- import vtk.vtkDoubleArray;
- import vtk.vtkFloatArray;
- import vtk.vtkIntArray;
- import vtk.vtkInteractorStyle;
- import vtk.vtkInteractorStyleTrackballCamera;
- import vtk.vtkPoints;
- import vtk.vtkPolyData;
- import vtk.vtkPolyDataMapper;
- import vtk.vtkRenderWindow;
- import vtk.vtkRenderWindowInteractor;
- import vtk.vtkRenderer;
-
- public class Demo1 {
-
- static {
- System.loadLibrary("vtkCommonJava");
- System.loadLibrary("vtkFilteringJava");
- System.loadLibrary("vtkRenderingJava");
- }
-
- public static void main(String[] args) {
- //vtk[Int/Float/Double]Array类代表了一类有规律、有意义的数据组,一般有两个作用:
- //①.装载表示数据集的几何结构的点集的坐标数据 —— 3Component per Tuple(点)
- //②.装载描述数据集的几何结构或拓扑结构的数据属性(Data Attributes)的数据 —— 标量(1Component/Tuple)、矢量(3Comps/Tuple)、张量(9)
- vtkFloatArray pcoords = new vtkFloatArray(); // 作用①:表示点集 —— 几何结构
- pcoords.SetNumberOfComponents(3); // 因为是坐标数据
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。