#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/libslic3r/Geometry/Voronoi.hpp>
Classes | |
| struct | Segment |
Public Types | |
| enum class | IssueType { NO_ISSUE_DETECTED , FINITE_EDGE_WITH_NON_FINITE_VERTEX , MISSING_VORONOI_VERTEX , NON_PLANAR_VORONOI_DIAGRAM , VORONOI_EDGE_INTERSECTING_INPUT_SEGMENT , PARABOLIC_VORONOI_EDGE_WITHOUT_FOCUS_POINT , UNKNOWN } |
| enum class | State { REPAIR_NOT_NEEDED , REPAIR_SUCCESSFUL , REPAIR_UNSUCCESSFUL , UNKNOWN } |
| using | coord_type = double |
| using | voronoi_diagram_type = boost::polygon::voronoi_diagram<coord_type> |
| using | point_type = boost::polygon::point_data<voronoi_diagram_type::coordinate_type> |
| using | segment_type = boost::polygon::segment_data<voronoi_diagram_type::coordinate_type> |
| using | rect_type = boost::polygon::rectangle_data<voronoi_diagram_type::coordinate_type> |
| using | coordinate_type = voronoi_diagram_type::coordinate_type |
| using | vertex_type = voronoi_diagram_type::vertex_type |
| using | edge_type = voronoi_diagram_type::edge_type |
| using | cell_type = voronoi_diagram_type::cell_type |
| using | const_vertex_iterator = voronoi_diagram_type::const_vertex_iterator |
| using | const_edge_iterator = voronoi_diagram_type::const_edge_iterator |
| using | const_cell_iterator = voronoi_diagram_type::const_cell_iterator |
| using | vertex_container_type = voronoi_diagram_type::vertex_container_type |
| using | edge_container_type = voronoi_diagram_type::edge_container_type |
| using | cell_container_type = voronoi_diagram_type::cell_container_type |
| using | SegmentIt = std::vector<Slic3r::Geometry::VoronoiDiagram::Segment>::iterator |
Public Member Functions | |
| VoronoiDiagram ()=default | |
| virtual | ~VoronoiDiagram ()=default |
| IssueType | get_issue_type () const |
| State | get_state () const |
| bool | is_valid () const |
| void | clear () |
| const vertex_container_type & | vertices () const |
| const edge_container_type & | edges () const |
| const cell_container_type & | cells () const |
| std::size_t | num_vertices () const |
| std::size_t | num_edges () const |
| std::size_t | num_cells () const |
| template<typename SegmentIterator> | |
| boost::polygon::enable_if< typenameboost::polygon::gtl_if< typenameboost::polygon::is_segment_concept< typenameboost::polygon::geometry_concept< typenamestd::iterator_traits< SegmentIterator >::value_type >::type >::type >::type, void >::type | construct_voronoi (SegmentIterator segment_begin, SegmentIterator segment_end, bool try_to_repair_if_needed=true) |
| template<typename PointIterator> | |
| boost::polygon::enable_if< typenameboost::polygon::gtl_if< typenameboost::polygon::is_point_concept< typenameboost::polygon::geometry_concept< typenamestd::iterator_traits< PointIterator >::value_type >::type >::type >::type, void >::type | construct_voronoi (const PointIterator first, const PointIterator last) |
| template<typename PointIterator, typename SegmentIterator> | |
| boost::polygon::enable_if< typenameboost::polygon::gtl_and< typenameboost::polygon::gtl_if< typenameboost::polygon::is_point_concept< typenameboost::polygon::geometry_concept< typenamestd::iterator_traits< PointIterator >::value_type >::type >::type >::type, typenameboost::polygon::gtl_if< typenameboost::polygon::is_segment_concept< typenameboost::polygon::geometry_concept< typenamestd::iterator_traits< SegmentIterator >::value_type >::type >::type >::type >::type, void >::type | construct_voronoi (const PointIterator p_first, const PointIterator p_last, const SegmentIterator s_first, const SegmentIterator s_last) |
| template<typename SegmentIterator> | |
| boost::polygon::enable_if< typenameboost::polygon::gtl_if< typenameboost::polygon::is_segment_concept< typenameboost::polygon::geometry_concept< typenamestd::iterator_traits< SegmentIterator >::value_type >::type >::type >::type, VoronoiDiagram::IssueType >::type | try_to_repair_degenerated_voronoi_diagram_by_rotation (SegmentIterator segment_begin, SegmentIterator segment_end, double fix_angle) |
| template<typename SegmentIterator> | |
| boost::polygon::enable_if< typenameboost::polygon::gtl_if< typenameboost::polygon::is_segment_concept< typenameboost::polygon::geometry_concept< typenamestd::iterator_traits< SegmentIterator >::value_type >::type >::type >::type, VoronoiDiagram::IssueType >::type | try_to_repair_degenerated_voronoi_diagram (SegmentIterator segment_begin, SegmentIterator segment_end) |
Static Public Member Functions | |
| template<typename SegmentIterator> | |
| static boost::polygon::enable_if< typenameboost::polygon::gtl_if< typenameboost::polygon::is_segment_concept< typenameboost::polygon::geometry_concept< typenamestd::iterator_traits< SegmentIterator >::value_type >::type >::type >::type, IssueType >::type | detect_known_issues (const VoronoiDiagram &voronoi_diagram, SegmentIterator segment_begin, SegmentIterator segment_end) |
Private Member Functions | |
| void | copy_to_local (voronoi_diagram_type &voronoi_diagram) |
Static Private Member Functions | |
| template<typename SegmentIterator> | |
| static boost::polygon::enable_if< typenameboost::polygon::gtl_if< typenameboost::polygon::is_segment_concept< typenameboost::polygon::geometry_concept< typenamestd::iterator_traits< SegmentIterator >::value_type >::type >::type >::type, IssueType >::type | detect_known_voronoi_cell_issues (const VoronoiDiagram &voronoi_diagram, SegmentIterator segment_begin, SegmentIterator segment_end) |
| static IssueType | detect_known_voronoi_edge_issues (const VoronoiDiagram &voronoi_diagram) |
Private Attributes | |
| voronoi_diagram_type | m_voronoi_diagram |
| vertex_container_type | m_vertices |
| edge_container_type | m_edges |
| cell_container_type | m_cells |
| bool | m_is_modified = false |
| State | m_state = State::UNKNOWN |
| IssueType | m_issue_type = IssueType::UNKNOWN |
Friends | |
| struct | boost::polygon::segment_traits< Slic3r::Geometry::VoronoiDiagram::Segment > |
| using Slic3r::Geometry::VoronoiDiagram::cell_container_type = voronoi_diagram_type::cell_container_type |
| using Slic3r::Geometry::VoronoiDiagram::cell_type = voronoi_diagram_type::cell_type |
| using Slic3r::Geometry::VoronoiDiagram::const_cell_iterator = voronoi_diagram_type::const_cell_iterator |
| using Slic3r::Geometry::VoronoiDiagram::const_edge_iterator = voronoi_diagram_type::const_edge_iterator |
| using Slic3r::Geometry::VoronoiDiagram::const_vertex_iterator = voronoi_diagram_type::const_vertex_iterator |
| using Slic3r::Geometry::VoronoiDiagram::coord_type = double |
| using Slic3r::Geometry::VoronoiDiagram::coordinate_type = voronoi_diagram_type::coordinate_type |
| using Slic3r::Geometry::VoronoiDiagram::edge_container_type = voronoi_diagram_type::edge_container_type |
| using Slic3r::Geometry::VoronoiDiagram::edge_type = voronoi_diagram_type::edge_type |
| using Slic3r::Geometry::VoronoiDiagram::point_type = boost::polygon::point_data<voronoi_diagram_type::coordinate_type> |
| using Slic3r::Geometry::VoronoiDiagram::rect_type = boost::polygon::rectangle_data<voronoi_diagram_type::coordinate_type> |
| using Slic3r::Geometry::VoronoiDiagram::segment_type = boost::polygon::segment_data<voronoi_diagram_type::coordinate_type> |
| using Slic3r::Geometry::VoronoiDiagram::SegmentIt = std::vector<Slic3r::Geometry::VoronoiDiagram::Segment>::iterator |
| using Slic3r::Geometry::VoronoiDiagram::vertex_container_type = voronoi_diagram_type::vertex_container_type |
| using Slic3r::Geometry::VoronoiDiagram::vertex_type = voronoi_diagram_type::vertex_type |
| using Slic3r::Geometry::VoronoiDiagram::voronoi_diagram_type = boost::polygon::voronoi_diagram<coord_type> |
|
strong |
|
strong |
| Enumerator | |
|---|---|
| REPAIR_NOT_NEEDED | |
| REPAIR_SUCCESSFUL | |
| REPAIR_UNSUCCESSFUL | |
| UNKNOWN | |
|
default |
Referenced by detect_known_issues(), detect_known_voronoi_cell_issues(), and detect_known_voronoi_edge_issues().
|
virtualdefault |
|
inline |
References m_cells, m_is_modified, and m_voronoi_diagram.
Referenced by Slic3r::Arachne::SkeletalTrapezoidation::constructFromPolygons(), detect_known_voronoi_cell_issues(), Slic3r::Voronoi::reset_inside_outside_annotations(), and Slic3r::Voronoi::debug::verify_inside_outside_annotations().
| void Slic3r::Geometry::VoronoiDiagram::clear | ( | ) |
References m_cells, m_edges, m_is_modified, m_issue_type, m_state, m_vertices, m_voronoi_diagram, and UNKNOWN.
|
inline |
References m_issue_type, m_state, m_voronoi_diagram, and UNKNOWN.
|
inline |
References m_issue_type, m_state, m_voronoi_diagram, and UNKNOWN.
| boost::polygon::enable_if< typenameboost::polygon::gtl_if< typenameboost::polygon::is_segment_concept< typenameboost::polygon::geometry_concept< typenamestd::iterator_traits< SegmentIterator >::value_type >::type >::type >::type, void >::type Slic3r::Geometry::VoronoiDiagram::construct_voronoi | ( | SegmentIterator | segment_begin, |
| SegmentIterator | segment_end, | ||
| bool | try_to_repair_if_needed = true ) |
References detect_known_issues(), FINITE_EDGE_WITH_NON_FINITE_VERTEX, m_issue_type, m_state, m_voronoi_diagram, MISSING_VORONOI_VERTEX, NO_ISSUE_DETECTED, NON_PLANAR_VORONOI_DIAGRAM, PARABOLIC_VORONOI_EDGE_WITHOUT_FOCUS_POINT, REPAIR_NOT_NEEDED, REPAIR_SUCCESSFUL, REPAIR_UNSUCCESSFUL, try_to_repair_degenerated_voronoi_diagram(), UNKNOWN, and VORONOI_EDGE_INTERSECTING_INPUT_SEGMENT.
Referenced by Slic3r::build_graph(), and Slic3r::Arachne::SkeletalTrapezoidation::constructFromPolygons().
|
private |
References m_cells, m_edges, m_is_modified, m_vertices, and m_voronoi_diagram.
Referenced by try_to_repair_degenerated_voronoi_diagram_by_rotation().
|
static |
References VoronoiDiagram(), detect_known_voronoi_cell_issues(), detect_known_voronoi_edge_issues(), Slic3r::Geometry::VoronoiUtilsCgal::is_voronoi_diagram_planar_angle(), NO_ISSUE_DETECTED, and NON_PLANAR_VORONOI_DIAGRAM.
Referenced by construct_voronoi(), and try_to_repair_degenerated_voronoi_diagram_by_rotation().
|
staticprivate |
References VoronoiDiagram(), Slic3r::cast(), cells(), Slic3r::Geometry::VoronoiUtils::compute_segment_cell_range(), Slic3r::cross2(), Slic3r::Geometry::VoronoiUtils::get_source_segment(), MISSING_VORONOI_VERTEX, NO_ISSUE_DETECTED, and VORONOI_EDGE_INTERSECTING_INPUT_SEGMENT.
Referenced by detect_known_issues().
|
staticprivate |
References VoronoiDiagram(), edges(), FINITE_EDGE_WITH_NON_FINITE_VERTEX, Slic3r::Geometry::VoronoiUtils::is_finite(), NO_ISSUE_DETECTED, and PARABOLIC_VORONOI_EDGE_WITHOUT_FOCUS_POINT.
Referenced by detect_known_issues().
|
inline |
References m_edges, m_is_modified, and m_voronoi_diagram.
Referenced by Slic3r::Voronoi::annotate_inside_outside(), Slic3r::build_graph(), detect_known_voronoi_edge_issues(), Slic3r::dump_voronoi_to_svg(), Slic3r::Voronoi::edge_offset_contour_intersections(), Slic3r::Geometry::VoronoiUtilsCgal::is_voronoi_diagram_planar_intersection(), Slic3r::Voronoi::offset(), Slic3r::Voronoi::reset_inside_outside_annotations(), Slic3r::Voronoi::skeleton_edges_rough(), Slic3r::Voronoi::debug::verify_inside_outside_annotations(), Slic3r::Voronoi::debug::verify_offset_intersection_points(), Slic3r::Voronoi::debug::verify_signed_distances(), Slic3r::Voronoi::debug::verify_twin_halfedges_successive(), and Slic3r::Voronoi::debug::verify_vertices_on_contour().
|
inline |
References m_issue_type.
|
inline |
|
inline |
References m_state, and REPAIR_UNSUCCESSFUL.
|
inline |
References m_cells, m_is_modified, and m_voronoi_diagram.
|
inline |
References m_edges, m_is_modified, and m_voronoi_diagram.
Referenced by Slic3r::Voronoi::edge_offset_contour_intersections(), Slic3r::Geometry::VoronoiUtilsCgal::is_voronoi_diagram_planar_intersection(), Slic3r::Voronoi::offset(), Slic3r::Voronoi::skeleton_edges_rough(), and Slic3r::Voronoi::debug::verify_twin_halfedges_successive().
|
inline |
References m_is_modified, m_vertices, and m_voronoi_diagram.
| boost::polygon::enable_if< typenameboost::polygon::gtl_if< typenameboost::polygon::is_segment_concept< typenameboost::polygon::geometry_concept< typenamestd::iterator_traits< SegmentIterator >::value_type >::type >::type >::type, VoronoiDiagram::IssueType >::type Slic3r::Geometry::VoronoiDiagram::try_to_repair_degenerated_voronoi_diagram | ( | SegmentIterator | segment_begin, |
| SegmentIterator | segment_end ) |
References m_issue_type, NO_ISSUE_DETECTED, PI, and try_to_repair_degenerated_voronoi_diagram_by_rotation().
Referenced by construct_voronoi().
| boost::polygon::enable_if< typenameboost::polygon::gtl_if< typenameboost::polygon::is_segment_concept< typenameboost::polygon::geometry_concept< typenamestd::iterator_traits< SegmentIterator >::value_type >::type >::type >::type, VoronoiDiagram::IssueType >::type Slic3r::Geometry::VoronoiDiagram::try_to_repair_degenerated_voronoi_diagram_by_rotation | ( | SegmentIterator | segment_begin, |
| SegmentIterator | segment_end, | ||
| double | fix_angle ) |
References Slic3r::Geometry::VoronoiUtils::compute_segment_cell_range(), copy_to_local(), Slic3r::Geometry::decode_input_segment_endpoint(), detect_known_issues(), Slic3r::Geometry::encode_input_segment_endpoint(), m_cells, m_vertices, and Slic3r::Geometry::VoronoiUtils::make_rotated_vertex().
Referenced by try_to_repair_degenerated_voronoi_diagram().
|
inline |
References m_is_modified, m_vertices, and m_voronoi_diagram.
Referenced by Slic3r::MMU_Graph::append_voronoi_vertices(), Slic3r::build_graph(), Slic3r::dump_voronoi_to_svg(), Slic3r::Voronoi::edge_offset_contour_intersections(), Slic3r::Geometry::VoronoiUtilsCgal::is_voronoi_diagram_planar_angle(), Slic3r::Voronoi::reset_inside_outside_annotations(), Slic3r::Voronoi::signed_vertex_distances(), Slic3r::Voronoi::debug::verify_inside_outside_annotations(), and Slic3r::Voronoi::debug::verify_signed_distances().
|
friend |
References m_issue_type, and UNKNOWN.
|
private |
Referenced by cells(), clear(), copy_to_local(), num_cells(), and try_to_repair_degenerated_voronoi_diagram_by_rotation().
|
private |
Referenced by clear(), copy_to_local(), edges(), and num_edges().
|
private |
Referenced by cells(), clear(), copy_to_local(), edges(), num_cells(), num_edges(), num_vertices(), and vertices().
|
private |
|
private |
Referenced by clear(), construct_voronoi(), construct_voronoi(), construct_voronoi(), get_state(), and is_valid().
|
private |
Referenced by clear(), copy_to_local(), num_vertices(), try_to_repair_degenerated_voronoi_diagram_by_rotation(), and vertices().
|
private |
Referenced by cells(), clear(), construct_voronoi(), construct_voronoi(), construct_voronoi(), copy_to_local(), edges(), num_cells(), num_edges(), num_vertices(), and vertices().