計算手法によっては, CellDataしか出力しない場合がある.で,PointDataが欲しいだろ?
境界条件なども考慮した精密な方法はユーザーが考えるべきであるが,とりあえず,その辺のセルデータの平均で格子点の値を計算してみるってのも良いだろう.いい加減な再構成だが,節約は大切だ.
で,サクッと再構成する例をvtkImageDataで示そう(他のデータ形式でも,もちろんできる)詳細はXCodeでVTK楽園を参照
#include <vtkCellDataToPointData.h> ... vtkSmartPointer<vtkImageData> src_Image; ... この辺でvtkImageのセルデータを追加する ... auto* C2P=vtkCellDataToPointData::New(); //フィルターアルゴリズムを作成 C2P->PassCellDataOn(); //入力のCellDataを出力にコピー(デフォで出力はPointDataだけになる) C2P->SetInputData(src_Image); //フィルター入力を指定 C2P->Update(); //フィルターを実行 vtkSmartPointer<vtkImageData> dst_Image=C2P->GetImageDataOutput(); //改変された出力を入力イメージにコピーしましょう src_Image->ShallowCopy(dst_Image);
これで, まあちょいといい加減だが, CellDataもPointDataも含んだデータを作成できる.
さて,これでわかるように,VTKには「フィルター」が沢山用意されており,それらでデータを加工できる.
フィルターには入力と出力がある.さらに,あるフィルターの出力を別のフィルターの入力に接続できる.こうして複雑な操作を行う一連の処理を「パイプライン」と呼ぶ.パイプラインの作成と実行については,ここで説明しよう.上の例は,パイプラインを構築せず,単一のフィルターを実行する例なのであるよ.