60{
61
62
64
65 PointIndex ctrindex;
66 unsigned idx = 0;
67 for(
const Point &ct : centroids) ctrindex.insert(
to_vec3(ct), idx++);
68
70
71 idx = 0;
72 for (
const Point &c : centroids) {
73 thr();
74
75 double dx =
c.x() - cc.x(), dy =
c.y() - cc.y();
76 double l = std::sqrt(dx * dx + dy * dy);
77 double nx = dx / l, ny = dy / l;
78
79 const Point &ct = centroids[idx];
80
81 std::vector<PointIndexEl> result = ctrindex.nearest(
to_vec3(ct), 2);
82
83 double dist = max_dist;
85 if (el.second != idx) {
87 break;
88 }
89
90 idx++;
91
92 if (dist >= max_dist) return;
93
96 r.points.emplace_back(cc);
97
99 r.points.emplace_back(c +
Point(n.y(), -n.x()));
100 r.points.emplace_back(c +
Point(-n.y(), n.x()));
101 offset(r, scaled<float>(1.));
102
104 }
105}
Points points
Definition MultiPoint.hpp:18
static Point centroid(const Points &pp)
Definition ConcaveHull.cpp:16
if(!(yy_init))
Definition lexer.c:1190
T dist(const boost::polygon::point_data< T > &p1, const boost::polygon::point_data< T > &p2)
Definition Geometry.cpp:280
std::pair< Vec3d, unsigned > PointIndexEl
Definition SpatIndex.hpp:16
Vec3d to_vec3(const Vec2crd &v2)
Definition ConcaveHull.cpp:12
Vec2crd to_vec2(const Vec3d &v3)
Definition ConcaveHull.cpp:14
Slic3r::Polygons offset(const Slic3r::Polygon &polygon, const float delta, ClipperLib::JoinType joinType, double miterLimit)
Definition ClipperUtils.cpp:416
Slic3r::Polygon Polygon
Definition Emboss.cpp:34
Kernel::Point_2 Point
Definition point_areas.cpp:20