26 const Eigen::Matrix<double, Eigen::Dynamic, 3> &points) {
27 init_VTKPointExport(points);
30 inline void init_VTKPointExport(
31 const Eigen::Matrix<double, Eigen::Dynamic, 3> &points) {
33 point_number_ = Eigen::VectorXi(points_.rows());
34 for (
int i = 0;
i < points_.rows(); ++
i) point_number_(
i) =
i;
40 inline void addDataSet(
const std::string &
name,
const Eigen::MatrixXd &
mat) {
43 const int cols =
mat.cols();
44 std::string
data_ascii =
"<DataArray type=\"Float32\" Name=\"" +
name +
45 "\" NumberOfComponents=\"" +
46 std::to_string(
mat.cols()) +
47 "\" format=\"ascii\">\n";
48 for (
int i = 0;
i <
mat.rows(); ++
i) {
49 for (
int j = 0;
j < cols; ++
j) {
57 inline void addComplexDataSet(
const std::string &
name,
58 const Eigen::MatrixXcd &
mat) {
59 addDataSet(
name + std::string(
"_real"),
mat.real());
60 addDataSet(
name + std::string(
"_imag"),
mat.imag());
63 inline void writeToFile(
const std::string &
filename) {
66 output <<
"<VTKFile type=\"PolyData\" version=\"0.1\" "
67 "byte_order=\"LittleEndian\">\n"
69 "<Piece NumberOfPoints=\" "
71 <<
"\" NumberOfVerts=\"0\" NumberOfLines=\"0\" NumberOfStrips=\"0\" "
72 "NumberOfPolys=\"0\">\n"
74 "<DataArray type=\"Float32\" NumberOfComponents=\"3\" "
75 "format=\"ascii\">\n";
77 output <<
"\n</DataArray>\n</Points>\n";
78 output <<
"<PointData Scalars=\"number\">\n"
79 "<DataArray type=\"Int32\" Name=\"number\" "
80 "format=\"ascii\">\n";
82 output <<
"</DataArray>\n";
83 for (
auto data : additionalData_) {
95 inline void clearData() {
97 additionalData_.shrink_to_fit();
101 Eigen::Matrix<double, Eigen::Dynamic, 3> points_;
102 Eigen::VectorXi point_number_;
103 std::vector<std::string> additionalData_;