OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::AllIntersectionsVisitor Struct Reference
Collaboration diagram for Slic3r::AllIntersectionsVisitor:

Public Member Functions

 AllIntersectionsVisitor (const EdgeGrid::Grid &grid, std::vector< Intersection > &intersections)
 AllIntersectionsVisitor (const EdgeGrid::Grid &grid, std::vector< Intersection > &intersections, const Line &travel_line)
void reset ()
bool operator() (coord_t iy, coord_t ix)

Public Attributes

const EdgeGrid::Grid & grid
std::vector< Intersection > & intersections
Line travel_line
std::unordered_set< std::pair< size_t, size_t >, boost::hash< std::pair< size_t, size_t > > > intersection_set

Detailed Description

Constructor & Destructor Documentation

◆ AllIntersectionsVisitor() [1/2]

Slic3r::AllIntersectionsVisitor::AllIntersectionsVisitor ( const EdgeGrid::Grid & grid,
std::vector< Intersection > & intersections )
inline
77 {
78 intersection_set.reserve(intersections.capacity());
79 }
std::unordered_set< std::pair< size_t, size_t >, boost::hash< std::pair< size_t, size_t > > > intersection_set
Definition AvoidCrossingPerimeters.cpp:110
std::vector< Intersection > & intersections
Definition AvoidCrossingPerimeters.cpp:108
const EdgeGrid::Grid & grid
Definition AvoidCrossingPerimeters.cpp:107

References grid, intersection_set, and intersections.

◆ AllIntersectionsVisitor() [2/2]

Slic3r::AllIntersectionsVisitor::AllIntersectionsVisitor ( const EdgeGrid::Grid & grid,
std::vector< Intersection > & intersections,
const Line & travel_line )
inline
83 {
84 intersection_set.reserve(intersections.capacity());
85 }
Line travel_line
Definition AvoidCrossingPerimeters.cpp:109

References grid, intersection_set, intersections, and travel_line.

Member Function Documentation

◆ operator()()

bool Slic3r::AllIntersectionsVisitor::operator() ( coord_t iy,
coord_t ix )
inline
92 {
93 // Called with a row and column of the grid cell, which is intersected by a line.
94 auto cell_data_range = grid.cell_data_range(iy, ix);
95 for (auto it_contour_and_segment = cell_data_range.first; it_contour_and_segment != cell_data_range.second; ++it_contour_and_segment) {
96 Point intersection_point;
97 if (travel_line.intersection(grid.line(*it_contour_and_segment), &intersection_point) &&
98 intersection_set.find(*it_contour_and_segment) == intersection_set.end()) {
99 intersections.push_back({ it_contour_and_segment->first, it_contour_and_segment->second, intersection_point });
100 intersection_set.insert(*it_contour_and_segment);
101 }
102 }
103 // Continue traversing the grid along the edge.
104 return true;
105 }
Kernel::Point_3 Point
Definition MeshRepair.cpp:81

References grid, intersection_set, intersections, and travel_line.

◆ reset()

void Slic3r::AllIntersectionsVisitor::reset ( )
inline
87 {
88 intersection_set.clear();
89 }

References intersection_set.

Member Data Documentation

◆ grid

const EdgeGrid::Grid& Slic3r::AllIntersectionsVisitor::grid

◆ intersection_set

std::unordered_set<std::pair<size_t, size_t>, boost::hash<std::pair<size_t, size_t> > > Slic3r::AllIntersectionsVisitor::intersection_set

◆ intersections

std::vector<Intersection>& Slic3r::AllIntersectionsVisitor::intersections

◆ travel_line

Line Slic3r::AllIntersectionsVisitor::travel_line

The documentation for this struct was generated from the following file: