26{
27 namespace sl = shapelike;
28
29 auto& rsh = sl::contour(rpoly);
30
31 sl::reserve(rsh, 2 * edgelist.size());
32
33
34 sl::addVertex(rsh, edgelist.front().first());
35 sl::addVertex(rsh, edgelist.front().second());
36
37
38 auto& cmp = _vsort<RawShape>;
39
40
41 top_nfp = *std::max_element(sl::cbegin(rsh), sl::cend(rsh), cmp );
42
43 auto tmp = std::next(sl::begin(rsh));
44
45
46 for(auto eit = std::next(edgelist.begin());
47 eit != edgelist.end();
48 ++eit)
49 {
50 auto d = *tmp - eit->first();
51 Vertex p = eit->second() + d;
52
53 sl::addVertex(rsh, p);
54
55
56 if(cmp(top_nfp, p)) top_nfp = p;
57
58 tmp = std::next(tmp);
59 }
60}