MCPcopy Create free account
hub / github.com/IfcOpenShell/IfcOpenShell / join_segment_runs

Function join_segment_runs

src/svgfill/src/arrange_polygons.cpp:1545–1582  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1543}
1544
1545Graph2D<K> join_segment_runs(
1546 DebugWriter& debug,
1547 const std::map<Point_2, std::vector<Point_2>>& line_graph,
1548 const std::map<Point_2, double>& midpoint_to_edge_length)
1549{
1550 auto graph = make_center_line_graph_data(line_graph, midpoint_to_edge_length);
1551 auto runs = runs_from_graph(graph);
1552 runs.erase(std::remove_if(runs.begin(), runs.end(), [](const LineRun& run) {
1553 return run.vertex_count <= 5;
1554 }), runs.end());
1555
1556 std::vector<Polygon_2> run_polygons;
1557 for (auto& r : runs) {
1558 auto ps = rectangle_corners(r.start, r.end, r.avg_width);
1559 std::array<Point_2, 4> exact_corners;
1560 std::transform(ps.begin(), ps.end(), exact_corners.begin(), [](const DPoint& p) {
1561 return to_exact_point(p);
1562 });
1563 run_polygons.emplace_back(exact_corners.begin(), exact_corners.end());
1564 }
1565 debug.write_polygons(run_polygons, "initial_runs");
1566 run_polygons.clear();
1567
1568 auto boxes = merge_intersecting_parallel_boxes_iterative(runs);
1569
1570 for (auto& r : boxes) {
1571 auto ps = rectangle_corners(r.start, r.end, r.avg_width);
1572 std::array<Point_2, 4> exact_corners;
1573 std::transform(ps.begin(), ps.end(), exact_corners.begin(), [](const DPoint& p) {
1574 return to_exact_point(p);
1575 });
1576 run_polygons.emplace_back(exact_corners.begin(), exact_corners.end());
1577 }
1578 debug.write_polygons(run_polygons, "merged_boxes");
1579
1580 auto snapped_graph = snap_points_to_box_axes(graph, boxes);
1581 return Graph2D<K>(snapped_graph);
1582}
1583
1584std::set<Triangle<K>> find_triangles(const std::map<Point_2, std::vector<Point_2>>& line_graph) {
1585 // Find triangles in this network often occuring at junctions in the corridor mesh

Callers 1

arrange_cgal_polygonsFunction · 0.85

Calls 11

runs_from_graphFunction · 0.85
rectangle_cornersFunction · 0.85
to_exact_pointFunction · 0.85
snap_points_to_box_axesFunction · 0.85
write_polygonsMethod · 0.80
eraseMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected