Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
Slic3r::FirstIntersectionVisitor Struct Reference
+ Collaboration diagram for Slic3r::FirstIntersectionVisitor:

Public Member Functions

 FirstIntersectionVisitor (const EdgeGrid::Grid &grid)
 
bool operator() (coord_t iy, coord_t ix)
 

Public Attributes

const EdgeGrid::Gridgrid
 
const Slic3r::Pointpt_current = nullptr
 
const Slic3r::Pointpt_next = nullptr
 
bool intersect = false
 

Detailed Description

Constructor & Destructor Documentation

◆ FirstIntersectionVisitor()

Slic3r::FirstIntersectionVisitor::FirstIntersectionVisitor ( const EdgeGrid::Grid grid)
inlineexplicit
96: grid(grid) {}
const EdgeGrid::Grid & grid
Definition AvoidCrossingPerimeters.cpp:117

Member Function Documentation

◆ operator()()

bool Slic3r::FirstIntersectionVisitor::operator() ( coord_t  iy,
coord_t  ix 
)
inline
99 {
100 assert(pt_current != nullptr);
101 assert(pt_next != nullptr);
102 // Called with a row and column of the grid cell, which is intersected by a line.
103 auto cell_data_range = grid.cell_data_range(iy, ix);
104 this->intersect = false;
105 for (auto it_contour_and_segment = cell_data_range.first; it_contour_and_segment != cell_data_range.second; ++it_contour_and_segment) {
106 // End points of the line segment and their vector.
107 auto segment = grid.segment(*it_contour_and_segment);
109 this->intersect = true;
110 return false;
111 }
112 }
113 // Continue traversing the grid along the edge.
114 return true;
115 }
EIGEN_DEVICE_FUNC SegmentReturnType segment(Index start, Index n)
This is the const version of segment(Index,Index).
Definition BlockMethods.h:888
std::pair< const Slic3r::Point &, const Slic3r::Point & > segment(const std::pair< size_t, size_t > &contour_and_segment_idx) const
Definition EdgeGrid.hpp:344
std::pair< std::vector< std::pair< size_t, size_t > >::const_iterator, std::vector< std::pair< size_t, size_t > >::const_iterator > cell_data_range(coord_t row, coord_t col) const
Definition EdgeGrid.hpp:336
bool segments_intersect(const Slic3r::Point &ip1, const Slic3r::Point &ip2, const Slic3r::Point &jp1, const Slic3r::Point &jp2)
Definition Geometry.hpp:112
const Slic3r::Point * pt_current
Definition AvoidCrossingPerimeters.cpp:118
const Slic3r::Point * pt_next
Definition AvoidCrossingPerimeters.cpp:119
bool intersect
Definition AvoidCrossingPerimeters.cpp:120

References Slic3r::EdgeGrid::Grid::cell_data_range(), grid, intersect, pt_current, pt_next, Slic3r::EdgeGrid::Grid::segment(), segment(), and Slic3r::Geometry::segments_intersect().

+ Here is the call graph for this function:

Member Data Documentation

◆ grid

const EdgeGrid::Grid& Slic3r::FirstIntersectionVisitor::grid

Referenced by operator()().

◆ intersect

bool Slic3r::FirstIntersectionVisitor::intersect = false

◆ pt_current

const Slic3r::Point* Slic3r::FirstIntersectionVisitor::pt_current = nullptr

◆ pt_next

const Slic3r::Point* Slic3r::FirstIntersectionVisitor::pt_next = nullptr

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