www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站 联系 HuangSteve@163.com
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理, 版权属于原作者 联系 HuangSteve@163.com
第 1 页 共 9 页
上图表示一个六面体的 Cell 的结构。其拓扑属性是由非结构化点集隐式定义出的。
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站 联系 HuangSteve@163.com
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理, 版权属于原作者 联系 HuangSteve@163.com
第 2 页 共 9 页
如上列出了不同的 Cell 类型。
再如下图中,将更加直观地显示出不同的 Cell 类型:
11.3 vtkDataSet 数据接口
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站 联系 HuangSteve@163.com
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理, 版权属于原作者 联系 HuangSteve@163.com
第 3 页 共 9 页
vtkDataSet 是为数据组物体叙述一个接口的一个抽象类。vtkDataSet 类中提供关于数据属性等到方面的数
据。所谓抽象类是不能被直接实例化的类。 abstract class to specify dataset behavior
vtkDataSet 类中同样含有大量的方法,这些方法都可以直接应用于 vtkDataSet 的继承类的对象中。对
vtkDataSet 的方法与 vtkDataArray 相类似,我们可以参考《VTK 使用指南》的 243-245 页。
以下程序是从 vtkProbeFilter 类中选取的部分原程序,vtkProbeFilter 的功能是对输入数据进行采样操作并且确
定采样点的坐标位置。
程序实例:
// First, copy the input to the output as a starting point
output->CopyStructure( input );
numPts = input->GetNumberOfPoints();//统计输入点的个数
this->ValidPoints->Allocate(numPts);
outPD = output->GetPointData();//为输出分配内存空间
outPD->InterpolateAllocate(pd, size, size);
// Use tolerance(公差) as a function of size of source data
tol2 = source->GetLength();
tol2 = tol2 ? tol2*tol2 / 1000.0 : 0.001;
//将输入点一个一个的进行操作,并进行插值
int abort=0;
vtkIdType progressInterval=numPts/20 + 1;
for (ptId=0; ptId < numPts && !abort; ptId++)
{
if ( !(ptId % progressInterval) )
{
this->UpdateProgress((double)ptId/numPts);
abort = GetAbortExecute();
}
// Get the xyz coordinate of the point in the input dataset
input->GetPoint(ptId, x);
// Find the cell that contains xyz and get it 找出合适的位置
cell = source->FindAndGetCell(x,NULL,-1,tol2,subId,pcoords,weights);
if (cell)
{
// Interpolate the point data 插入新的数据点
outPD->InterpolatePoint(pd,ptId,cell->PointIds,weights);
this->ValidPoints->InsertNextValue(ptId);
}
else
{