Browse Source

modify local AABB compute

V2-integral
Zhicheng Wang 6 days ago
parent
commit
83f6d67d48
  1. 13
      primitive_process/interface/primitive/axis/polyline_extrude_axis.hpp

13
primitive_process/interface/primitive/axis/polyline_extrude_axis.hpp

@ -17,6 +17,19 @@ struct PE_API polyline_extrude_axis final : public extrude_axis {
{ {
aabb_t res{}; aabb_t res{};
for (const auto& v : vertices) res.extend(Eigen::Vector3d{v[0], v[1], 0}); for (const auto& v : vertices) res.extend(Eigen::Vector3d{v[0], v[1], 0});
for (size_t i = 0; i < bulges.size(); ++i) {
if (std::abs(bulges[i]) <= epsilon) continue;
const auto& a = vertices[i];
const auto& b = vertices[i + 1];
const auto half_ab = 0.5 * (a + b);
const auto bisec_vec = 0.5 * Eigen::Vector2d{a.y() - b.y(), b.x() - a.x()};
const auto center = half_ab + bisec_vec / bulges[i];
const auto ca = a - center;
const auto half_theta = std::atan(bulges[i]);
Eigen::Rotation2Dd rot{half_theta};
const auto mid = center + rot * ca;
res.extend(Eigen::Vector3d{mid[0], mid[1], 0});
}
return res; return res;
} }

Loading…
Cancel
Save