From fc909da4000bd2e8d8df619c2d0acc121923791d Mon Sep 17 00:00:00 2001 From: AndreaRigoni Date: Tue, 23 Sep 2025 18:21:11 +0200 Subject: [PATCH] fix export to Vti --- src/Math/Transform.h | 11 +++++++++++ src/Math/VoxImage.cpp | 11 +++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/Math/Transform.h b/src/Math/Transform.h index f3a5b9b..8b34d38 100644 --- a/src/Math/Transform.h +++ b/src/Math/Transform.h @@ -110,6 +110,17 @@ public: inline void Rotate(const Matrix3f &m) { this->m_T.rotate(m); } + inline void Rotate(const float angle, Vector3f axis) + { + axis.normalize(); // prehaps not necessary ( see eigens ) + Eigen::AngleAxisf ax(angle,axis); + this->m_T.rotate(Eigen::Quaternion(ax)); + } + + inline void Rotate(const Vector3f euler_axis) { + float angle = euler_axis.norm(); + Rotate(angle,euler_axis); + } inline void PreRotate(const Matrix3f &m) { this->m_T.prerotate(m); } diff --git a/src/Math/VoxImage.cpp b/src/Math/VoxImage.cpp index bc1c587..b655b1f 100644 --- a/src/Math/VoxImage.cpp +++ b/src/Math/VoxImage.cpp @@ -114,8 +114,11 @@ void Abstract::VoxImage::ExportToVti (const char *file, bool density_type, bool size_t npoints = nx*ny*nz; float *scalar = static_cast(image->GetScalarPointer()); + StructuredData unwrap(*voxels); + unwrap.SetDataOrder(StructuredData::XYZ); // move to XYZ order (VTK) for (size_t i = 0; i < npoints; i++) { - scalar[i] = static_cast(voxels->GetValue(i) * norm); + Vector3i idx = unwrap.UnMap(i); + scalar[i] = static_cast(voxels->GetValue(idx) * norm); } // Create a custom string key @@ -170,8 +173,12 @@ int Abstract::VoxImage::ImportFromVti(const char *file, bool density_type) { size_t npoints = nx*ny*nz; float *scalar = static_cast(image->GetScalarPointer()); + + StructuredData wrap(*voxels); + wrap.SetDataOrder(StructuredData::XYZ); for (size_t i = 0; i < npoints; i++) { - voxels->SetValue(i, scalar[i] / norm); + Vector3i idx = wrap.UnMap(i); + voxels->SetValue(idx, scalar[i] / norm); } return true;