Browse Source

fix logical error of cylinder's plane

V2-origin
Zhicheng Wang 4 weeks ago
parent
commit
10f309c996
  1. 8
      network_process/src/process.cpp
  2. 14
      primitive_process/interface/data/data_type.hpp
  3. 2
      primitive_process/src/primitive/simple/cylinder.cpp

8
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<uint32_t>{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<std::pair<uint32_t, uint32_t>> shell_links{};
@ -129,6 +125,10 @@ ISNP_API void build_implicit_network_by_blobtree(const s_settings&
compute_arrangement_cells(static_cast<uint32_t>(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{};

14
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;
}();

2
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,

Loading…
Cancel
Save