Classes | |
| struct | SegmentIntersection |
Functions | |
| double | boundary_epsilon () |
| bool | line_intersection_t (const Point &a, const Point &b, const Point &c, const Point &d, double &t, Point &intersection) |
| template<typename Fn> | |
| void | for_each_expolygon_contour (const ExPolygon &expolygon, Fn &&fn) |
| void | add_unique_param (std::vector< double > ¶ms, double t) |
| std::vector< SegmentIntersection > | contour_intersections (const Point &a, const Point &b, const Polygon &polygon) |
| bool | point_in_expolygons (const ExPolygons &expolygons, const Point &point, bool border_result) |
| bool | point_on_expolygon_boundary (const ExPolygon &expolygon, const Point &point) |
| bool | point_on_expolygons_boundary (const ExPolygons &expolygons, const Point &point) |
| bool | point_in_expolygons_interior (const ExPolygons &expolygons, const Point &point) |
| std::vector< double > | boundary_params_for_segment (const Point &a, const Point &b, const ExPolygons &expolygons) |
| Point | interpolate (const Point &a, const Point &b, double t) |
| bool | segment_enters_expolygons_interior (const Point &a, const Point &b, const ExPolygons &expolygons) |
| std::optional< double > | first_interior_param_for_segment (const Point &a, const Point &b, const ExPolygons &expolygons) |
| bool | segment_inside_bed (const Point &a, const Point &b, const ExPolygons &valid_bed) |
| double | polyline_length (const Polyline &polyline) |
| bool | points_near (const Point &lhs, const Point &rhs) |
| bool | replacement_matches_original_segment (const Polyline &replacement, const Point &a, const Point &b) |
| void | append_point (Points &points, const Point &point) |
| Polyline | make_forward_detour (const Point &a, const Point &b, const Polygon &contour, const SegmentIntersection &entry, const SegmentIntersection &exit) |
| Polyline | make_backward_detour (const Point &a, const Point &b, const Polygon &contour, const SegmentIntersection &entry, const SegmentIntersection &exit) |
| bool | routed_polyline_inside_bed (const Polyline &polyline, const ExPolygons &valid_bed, const bool allow_start_outside, const bool allow_end_outside) |
| bool | polyline_intersects_obstacles (const Polyline &polyline, const ExPolygons &obstacles) |
| std::optional< size_t > | first_intersected_obstacle (const Point &a, const Point &b, const ExPolygons &obstacles) |
| std::optional< Polyline > | detour_around_obstacle (const Point &a, const Point &b, const ExPolygon &obstacle, const ExPolygons &obstacles, const ExPolygons &valid_bed, const bool allow_start_outside, const bool allow_end_outside) |
| void | replace_segment (Polyline &path, size_t segment_idx, const Polyline &replacement) |
| Polyline | simplify_path (const Polyline &path, const ExPolygons &obstacles, const ExPolygons &valid_bed) |
Variables | |
| constexpr double | T_EPSILON = 1e-9 |
| constexpr size_t | MAX_REROUTE_ITERATIONS = 16 |
| struct Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::SegmentIntersection |
| Class Members | ||
|---|---|---|
| size_t | edge_idx { 0 } | |
| Point | point | |
| double | t { 0.0 } | |
| void Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::add_unique_param | ( | std::vector< double > & | params, |
| double | t ) |
References add_unique_param().
Referenced by add_unique_param(), and boundary_params_for_segment().
| void Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::append_point | ( | Points & | points, |
| const Point & | point ) |
References append_point().
Referenced by append_point(), make_backward_detour(), make_forward_detour(), replace_segment(), and simplify_path().
| double Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::boundary_epsilon | ( | ) |
References boundary_epsilon(), scale_, and SCALED_EPSILON.
Referenced by boundary_epsilon(), point_on_expolygon_boundary(), and points_near().
| std::vector< double > Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::boundary_params_for_segment | ( | const Point & | a, |
| const Point & | b, | ||
| const ExPolygons & | expolygons ) |
References add_unique_param(), boundary_params_for_segment(), Slic3r::contour(), contour_intersections(), for_each_expolygon_contour(), and Slic3r::intersection().
Referenced by boundary_params_for_segment(), first_interior_param_for_segment(), segment_enters_expolygons_interior(), and segment_inside_bed().
| std::vector< SegmentIntersection > Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::contour_intersections | ( | const Point & | a, |
| const Point & | b, | ||
| const Polygon & | polygon ) |
References contour_intersections(), line_intersection_t(), and Slic3r::MultiPoint::points.
Referenced by boundary_params_for_segment(), contour_intersections(), and detour_around_obstacle().
| std::optional< Polyline > Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::detour_around_obstacle | ( | const Point & | a, |
| const Point & | b, | ||
| const ExPolygon & | obstacle, | ||
| const ExPolygons & | obstacles, | ||
| const ExPolygons & | valid_bed, | ||
| const bool | allow_start_outside, | ||
| const bool | allow_end_outside ) |
References Slic3r::ExPolygon::contour, contour_intersections(), detour_around_obstacle(), make_backward_detour(), make_forward_detour(), polyline_intersects_obstacles(), polyline_length(), and routed_polyline_inside_bed().
Referenced by detour_around_obstacle().
| std::optional< double > Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::first_interior_param_for_segment | ( | const Point & | a, |
| const Point & | b, | ||
| const ExPolygons & | expolygons ) |
References boundary_params_for_segment(), first_interior_param_for_segment(), interpolate(), point_in_expolygons_interior(), and T_EPSILON.
Referenced by first_interior_param_for_segment(), and first_intersected_obstacle().
| std::optional< size_t > Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::first_intersected_obstacle | ( | const Point & | a, |
| const Point & | b, | ||
| const ExPolygons & | obstacles ) |
References first_interior_param_for_segment(), and first_intersected_obstacle().
Referenced by first_intersected_obstacle().
| void Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::for_each_expolygon_contour | ( | const ExPolygon & | expolygon, |
| Fn && | fn ) |
References Slic3r::ExPolygon::contour, for_each_expolygon_contour(), and Slic3r::ExPolygon::holes.
Referenced by boundary_params_for_segment(), and for_each_expolygon_contour().
| Point Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::interpolate | ( | const Point & | a, |
| const Point & | b, | ||
| double | t ) |
References interpolate().
Referenced by first_interior_param_for_segment(), interpolate(), segment_enters_expolygons_interior(), and segment_inside_bed().
| bool Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::line_intersection_t | ( | const Point & | a, |
| const Point & | b, | ||
| const Point & | c, | ||
| const Point & | d, | ||
| double & | t, | ||
| Point & | intersection ) |
References Slic3r::cast(), Slic3r::cross2(), Slic3r::intersection(), line_intersection_t(), and T_EPSILON.
Referenced by contour_intersections(), and line_intersection_t().
| Polyline Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::make_backward_detour | ( | const Point & | a, |
| const Point & | b, | ||
| const Polygon & | contour, | ||
| const SegmentIntersection & | entry, | ||
| const SegmentIntersection & | exit ) |
References append_point(), Slic3r::contour(), count, Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::SegmentIntersection::edge_idx, make_backward_detour(), and Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::SegmentIntersection::point.
Referenced by detour_around_obstacle(), and make_backward_detour().
| Polyline Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::make_forward_detour | ( | const Point & | a, |
| const Point & | b, | ||
| const Polygon & | contour, | ||
| const SegmentIntersection & | entry, | ||
| const SegmentIntersection & | exit ) |
References append_point(), Slic3r::contour(), count, Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::SegmentIntersection::edge_idx, make_forward_detour(), and Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::SegmentIntersection::point.
Referenced by detour_around_obstacle(), and make_forward_detour().
| bool Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::point_in_expolygons | ( | const ExPolygons & | expolygons, |
| const Point & | point, | ||
| bool | border_result ) |
References point_in_expolygons().
Referenced by point_in_expolygons(), point_in_expolygons_interior(), routed_polyline_inside_bed(), and segment_inside_bed().
| bool Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::point_in_expolygons_interior | ( | const ExPolygons & | expolygons, |
| const Point & | point ) |
References point_in_expolygons(), point_in_expolygons_interior(), and point_on_expolygons_boundary().
Referenced by first_interior_param_for_segment(), point_in_expolygons_interior(), and segment_enters_expolygons_interior().
| bool Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::point_on_expolygon_boundary | ( | const ExPolygon & | expolygon, |
| const Point & | point ) |
References boundary_epsilon(), Slic3r::ExPolygon::contour, Slic3r::ExPolygon::holes, Slic3r::Polygon::on_boundary(), and point_on_expolygon_boundary().
Referenced by point_on_expolygon_boundary().
| bool Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::point_on_expolygons_boundary | ( | const ExPolygons & | expolygons, |
| const Point & | point ) |
References point_on_expolygons_boundary().
Referenced by point_in_expolygons_interior(), and point_on_expolygons_boundary().
| bool Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::points_near | ( | const Point & | lhs, |
| const Point & | rhs ) |
References boundary_epsilon(), and points_near().
Referenced by points_near(), and replacement_matches_original_segment().
| bool Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::polyline_intersects_obstacles | ( | const Polyline & | polyline, |
| const ExPolygons & | obstacles ) |
References Slic3r::MultiPoint::points, polyline_intersects_obstacles(), and segment_enters_expolygons_interior().
Referenced by detour_around_obstacle(), and polyline_intersects_obstacles().
| double Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::polyline_length | ( | const Polyline & | polyline | ) |
References Slic3r::length(), Slic3r::MultiPoint::points, and polyline_length().
Referenced by detour_around_obstacle(), and polyline_length().
| void Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::replace_segment | ( | Polyline & | path, |
| size_t | segment_idx, | ||
| const Polyline & | replacement ) |
References append_point(), Slic3r::MultiPoint::points, and replace_segment().
Referenced by replace_segment().
| bool Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::replacement_matches_original_segment | ( | const Polyline & | replacement, |
| const Point & | a, | ||
| const Point & | b ) |
References Slic3r::MultiPoint::points, points_near(), and replacement_matches_original_segment().
Referenced by replacement_matches_original_segment().
| bool Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::routed_polyline_inside_bed | ( | const Polyline & | polyline, |
| const ExPolygons & | valid_bed, | ||
| const bool | allow_start_outside, | ||
| const bool | allow_end_outside ) |
References point_in_expolygons(), Slic3r::MultiPoint::points, routed_polyline_inside_bed(), and segment_inside_bed().
Referenced by detour_around_obstacle(), and routed_polyline_inside_bed().
| bool Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::segment_enters_expolygons_interior | ( | const Point & | a, |
| const Point & | b, | ||
| const ExPolygons & | expolygons ) |
References boundary_params_for_segment(), interpolate(), point_in_expolygons_interior(), segment_enters_expolygons_interior(), and T_EPSILON.
Referenced by polyline_intersects_obstacles(), segment_enters_expolygons_interior(), and simplify_path().
| bool Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::segment_inside_bed | ( | const Point & | a, |
| const Point & | b, | ||
| const ExPolygons & | valid_bed ) |
References boundary_params_for_segment(), interpolate(), point_in_expolygons(), segment_inside_bed(), and T_EPSILON.
Referenced by routed_polyline_inside_bed(), segment_inside_bed(), and simplify_path().
| Polyline Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::simplify_path | ( | const Polyline & | path, |
| const ExPolygons & | obstacles, | ||
| const ExPolygons & | valid_bed ) |
References append_point(), Slic3r::MultiPoint::points, segment_enters_expolygons_interior(), segment_inside_bed(), and simplify_path().
Referenced by simplify_path().
|
constexpr |
|
constexpr |