diff --git a/network_process/src/process.cpp b/network_process/src/process.cpp index 36fea8c..22c6845 100644 --- a/network_process/src/process.cpp +++ b/network_process/src/process.cpp @@ -106,10 +106,6 @@ ISNP_API void build_implicit_network_by_blobtree(const s_settings& { arrangement_cells.reserve(shells.size()); for (uint32_t i = 0; i < shells.size(); ++i) { arrangement_cells.emplace_back(stl_vector_mp{i}); } - shell_to_cell.resize(shells.size()); - for (uint32_t i = 0; i < arrangement_cells.size(); i++) { - for (auto shell : arrangement_cells[i]) shell_to_cell[shell] = i; - } } else { { stl_vector_mp> shell_links{}; @@ -129,6 +125,10 @@ ISNP_API void build_implicit_network_by_blobtree(const s_settings& compute_arrangement_cells(static_cast(shells.size()), shell_links, arrangement_cells); } } + shell_to_cell.resize(shells.size()); + for (uint32_t i = 0; i < arrangement_cells.size(); i++) { + for (auto shell : arrangement_cells[i]) shell_to_cell[shell] = i; + } // post process { dynamic_bitset_mp<> active_cell_label{}; diff --git a/primitive_process/interface/data/data_type.hpp b/primitive_process/interface/data/data_type.hpp index e5ce164..7348ad2 100644 --- a/primitive_process/interface/data/data_type.hpp +++ b/primitive_process/interface/data/data_type.hpp @@ -25,7 +25,17 @@ const auto plane_to_z_pos_1_model_matrix = []() { res.world_to_local.linear().col(2) = Eigen::Vector3d{1, 0, 0}; res.world_to_local.translation() = Eigen::Vector3d{-1, 0, 0}; res.local_to_world = res.world_to_local; - res.local_to_world.translation() = Eigen::Vector3d{1, 0, 0}; + res.local_to_world.translation() = Eigen::Vector3d{0, 0, 1}; + return res; +}(); +const auto plane_to_z_model_matrix = []() { + paired_model_matrix res{}; + Eigen::Matrix3d::Identity(); + res.world_to_local.linear().col(0) = Eigen::Vector3d{0, 0, 1}; + res.world_to_local.linear().col(1) = Eigen::Vector3d{0, 1, 0}; + res.world_to_local.linear().col(2) = Eigen::Vector3d{1, 0, 0}; + res.world_to_local.translation() = Eigen::Vector3d{0, 0, 0}; + res.local_to_world = res.world_to_local; return res; }(); const auto plane_to_z_neg_1_model_matrix = []() { @@ -35,7 +45,7 @@ const auto plane_to_z_neg_1_model_matrix = []() { res.world_to_local.linear().col(2) = Eigen::Vector3d{1, 0, 0}; res.world_to_local.translation() = Eigen::Vector3d{1, 0, 0}; res.local_to_world = res.world_to_local; - res.local_to_world.translation() = Eigen::Vector3d{-1, 0, 0}; + res.local_to_world.translation() = Eigen::Vector3d{0, 0, -1}; return res; }(); diff --git a/primitive_process/src/primitive/simple/cylinder.cpp b/primitive_process/src/primitive/simple/cylinder.cpp index 32243c9..da6c6c5 100644 --- a/primitive_process/src/primitive/simple/cylinder.cpp +++ b/primitive_process/src/primitive/simple/cylinder.cpp @@ -4,7 +4,7 @@ namespace internal { void cylinder_t::initialize(primitive_data_center_t &data_center) { - auto [bottom_plane_iter, _] = data_center.transform_blocks.acquire(internal::plane_to_z_neg_1_model_matrix); + auto [bottom_plane_iter, _] = data_center.transform_blocks.acquire(internal::plane_to_z_model_matrix); auto [cylinder_iter, __] = data_center.transform_blocks.acquire(internal::identity_model_matrix); auto [top_plane_iter, ___] = data_center.transform_blocks.acquire(internal::plane_to_z_pos_1_model_matrix); initialize(data_center,