Browse Source

fix wrong normal direction of bottom plane in cylinder

V2-integral-fix
Zhicheng Wang 2 weeks ago
parent
commit
79c835c06a
  1. 14
      primitive_process/interface/data/data_type.hpp
  2. 2
      primitive_process/interface/primitive/simple/cylinder.hpp

14
primitive_process/interface/data/data_type.hpp

@ -23,7 +23,6 @@ static inline paired_model_matrix identity_model_matrix{internal::transform_bloc
internal::transform_block::Identity()};
static inline auto plane_to_z_pos_1_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};
@ -34,7 +33,6 @@ static inline auto plane_to_z_pos_1_model_matrix = []() {
}();
static inline 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};
@ -42,6 +40,17 @@ static inline auto plane_to_z_model_matrix = []() {
res.local_to_world = res.world_to_local;
return res;
}();
static inline auto plane_to_z_flipped_model_matrix = []() {
paired_model_matrix res{};
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;
res.local_to_world.linear().col(0) = Eigen::Vector3d{0, 0, 1};
res.local_to_world.linear().col(2) = Eigen::Vector3d{-1, 0, 0};
return res;
}();
static inline auto plane_to_z_neg_1_model_matrix = []() {
paired_model_matrix res{};
res.world_to_local.linear().col(0) = Eigen::Vector3d{0, 0, 1};
@ -57,6 +66,7 @@ static inline auto plane_to_z_neg_1_model_matrix = []() {
const auto identity_model_matrix_ptr = make_pointer_wrapper(hidden::identity_model_matrix);
const auto plane_to_z_pos_1_model_matrix_ptr = make_pointer_wrapper(hidden::plane_to_z_pos_1_model_matrix);
const auto plane_to_z_model_matrix_ptr = make_pointer_wrapper(hidden::plane_to_z_model_matrix);
const auto plane_to_z_flipped_model_matrix_ptr = make_pointer_wrapper(hidden::plane_to_z_flipped_model_matrix);
const auto plane_to_z_neg_1_model_matrix_ptr = make_pointer_wrapper(hidden::plane_to_z_neg_1_model_matrix);
const inline auto empty_affine_matrix = [] {

2
primitive_process/interface/primitive/simple/cylinder.hpp

@ -21,7 +21,7 @@ struct cylinder_t final : public primitive {
stl_vector_mp<internal::paired_model_matrix_ptr_t> get_subface_init_model_matrices() const override
{
return {identity_model_matrix_ptr, plane_to_z_model_matrix_ptr, plane_to_z_pos_1_model_matrix_ptr};
return {identity_model_matrix_ptr, plane_to_z_flipped_model_matrix_ptr, plane_to_z_pos_1_model_matrix_ptr};
}
std::array<marked_subface_ptr_t<subface>, 3> subfaces{};

Loading…
Cancel
Save