假设我有一个矢量场u,由在空间中的位置rx、ry和rz定义的分量ux、uy和uz组成(无序)。
我想要的是将这个矢量场与VTK格式一起存储,即使用libvtk中的“vtkwriter”类来实现与Paraview的可视化。
我认为我已经正确编写了包含位置的代码,但不知道该如何包含数据。
第一个问题是:通用方法是否正确,即使用
在搜索互联网时,我发现了很多结果,介绍最终文件应该是什么样子的。我可能可以手动生成那种格式,但这并不是我想做的。
另一方面,我有些无法理解VTK的文档。每当我查找一个类的文档时,它会指向其他一些类的文档,而这些其他类的文档又会回到第一个文档。
例子也是如此。到目前为止,我还没有找到一个能够解释如何处理在任意位置定义的矢量值数据的示例,而其他示例则非常复杂,让我完全卡住了。
我认为,解决方案某种程度上使用了
提前致谢。
我想要的是将这个矢量场与VTK格式一起存储,即使用libvtk中的“vtkwriter”类来实现与Paraview的可视化。
我认为我已经正确编写了包含位置的代码,但不知道该如何包含数据。
#include <vtkPoints.h>
#include <vtkPolyDataWriter.h>
#include <vtkSmartPointer.h>
void write_file (double* rx, double* ry, double* rz,
double* ux, double* uy, double* uz,
int n, const char* filename)
{
vtkSmartPointer<vtkPoints> points =
vtkSmartPointer<vtkPoints>::New ();
points->SetNumberOfPoints(n);
for (int i = 0; i < n; ++i) {
points->SetPoint(i, rx[i], ry[i], rz[i]);
}
// how to incorporate the vector field u?
vtkSmartPointer<vtkPolyDataWriter> writer =
vtkSmartPointer<vtkPolyDataWriter>::New ();
writer->setFileName (filename);
// how to tell the writer, what to write?
writer->Write ();
}
第一个问题是:通用方法是否正确,即使用
vtkPoints
来处理坐标?在搜索互联网时,我发现了很多结果,介绍最终文件应该是什么样子的。我可能可以手动生成那种格式,但这并不是我想做的。
另一方面,我有些无法理解VTK的文档。每当我查找一个类的文档时,它会指向其他一些类的文档,而这些其他类的文档又会回到第一个文档。
例子也是如此。到目前为止,我还没有找到一个能够解释如何处理在任意位置定义的矢量值数据的示例,而其他示例则非常复杂,让我完全卡住了。
我认为,解决方案某种程度上使用了
vtkPolyData
,但我无法弄清楚如何插入数据。我认为,它需要一个vtkDoubleArray
,但到目前为止,我还没有找到如何将其制作成矢量值的方法。提前致谢。