Skip to content

polydata标量数学运算


开发环境:


demo解决问题:关键类vtkArrayCalculator, 对polydata中集合单元数组坐标进行算数运算,通过具名数组(内部估计是用map实现)指定需要运算的对象、计算字符串(需要了解复杂字符串如何进行解析)、计算结果保存目标数组,个人觉得应用场景会比较少,可能更多的是直接loop进行数组计算赋值

  • 首先在三维空间中创建一组 3 个点和一个名为 "orig "的双数组,其中包含三个值: 1.0、2.0 和 3.0。

  • 设置 PolyData 然后构建一个 vtkPolyData 对象来保存点及其相关数据。 数组计算

  • 代码会使用 vtkArrayCalculator 设置两个数组计算: 第一个计算 (calc1) 将 "orig "数组中的每个值加 1。 第二个计算 (calc2) 检查 "orig "数组中的每个值,如果值是 2,则赋值 1,否则保留原值。 迭代和输出结果:

每次计算后,代码都会访问结果数组并遍历其值,然后将其输出到控制台。 该程序主要演示了使用 VTK 对三维空间中与点相关的数据执行数组计算的过程。这些计算可用于各种目的,例如修改或从与 VTK 数据集中的点相关联的现有数组中导出新数据。

cpp
  vtkNew<vtkArrayCalculator> calc1;
  calc1->SetInputData(polydata);
  calc1->AddScalarArrayName("orig");
  calc1->SetFunction("orig+1");
  calc1->SetResultArrayName("orig");
  calc1->Update();
cpp
  vtkNew<vtkArrayCalculator> calc2;
  calc2->SetInputData(polydata);
  calc2->AddScalarArrayName("orig");
  calc2->SetFunction("if(orig=2,1,orig)"

基于 VitePress 强力驱动 | 记录技术与生活