OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
ExclusionVolumeTravelAvoidance.cpp File Reference
#include "ExclusionVolumeTravelAvoidance.hpp"
#include "libslic3r/ExPolygon.hpp"
#include "libslic3r/Point.hpp"
#include "libslic3r/PrintConfig.hpp"
#include "libslic3r/libslic3r.h"
#include <cstddef>
#include <optional>
#include <vector>
#include "libslic3r/ClipperUtils.hpp"
#include "libslic3r/ExclusionVolumeGeometry.hpp"
#include "libslic3r/Line.hpp"
#include "libslic3r/Polygon.hpp"
#include <algorithm>
#include <cmath>
#include <limits>
#include <utility>
Include dependency graph for ExclusionVolumeTravelAvoidance.cpp:

Go to the source code of this file.

Classes

struct  Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::SegmentIntersection

Namespaces

namespace  Slic3r
 |/ Copyright (c) Prusa Research 2020 - 2023 Enrico Turri @enricoturri1966 |/ |/ PrusaSlicer is released under the terms of the AGPLv3 or higher |/
namespace  Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}

Functions

double Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::boundary_epsilon ()
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)
template<typename Fn>
void Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::for_each_expolygon_contour (const ExPolygon &expolygon, Fn &&fn)
void Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::add_unique_param (std::vector< double > &params, double t)
std::vector< SegmentIntersection > Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::contour_intersections (const Point &a, const Point &b, const Polygon &polygon)
bool Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::point_in_expolygons (const ExPolygons &expolygons, const Point &point, bool border_result)
bool Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::point_on_expolygon_boundary (const ExPolygon &expolygon, const Point &point)
bool Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::point_on_expolygons_boundary (const ExPolygons &expolygons, const Point &point)
bool Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::point_in_expolygons_interior (const ExPolygons &expolygons, const Point &point)
std::vector< double > Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::boundary_params_for_segment (const Point &a, const Point &b, const ExPolygons &expolygons)
Point Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::interpolate (const Point &a, const Point &b, double t)
bool Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::segment_enters_expolygons_interior (const Point &a, const Point &b, const ExPolygons &expolygons)
std::optional< double > Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::first_interior_param_for_segment (const Point &a, const Point &b, const ExPolygons &expolygons)
bool Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::segment_inside_bed (const Point &a, const Point &b, const ExPolygons &valid_bed)
double Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::polyline_length (const Polyline &polyline)
bool Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::points_near (const Point &lhs, const Point &rhs)
bool Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::replacement_matches_original_segment (const Polyline &replacement, const Point &a, const Point &b)
void Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::append_point (Points &points, const Point &point)
Polyline Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::make_forward_detour (const Point &a, const Point &b, const Polygon &contour, const SegmentIntersection &entry, const SegmentIntersection &exit)
Polyline Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::make_backward_detour (const Point &a, const Point &b, const Polygon &contour, const SegmentIntersection &entry, const SegmentIntersection &exit)
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)
bool Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::polyline_intersects_obstacles (const Polyline &polyline, const ExPolygons &obstacles)
std::optional< size_t > Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::first_intersected_obstacle (const Point &a, const Point &b, const ExPolygons &obstacles)
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)
void Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::replace_segment (Polyline &path, size_t segment_idx, const Polyline &replacement)
Polyline Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::simplify_path (const Polyline &path, const ExPolygons &obstacles, const ExPolygons &valid_bed)

Variables

constexpr double Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::T_EPSILON = 1e-9
constexpr size_t Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::MAX_REROUTE_ITERATIONS = 16

Class Documentation

◆ Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::SegmentIntersection

struct Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::SegmentIntersection
Collaboration diagram for Slic3r::anonymous_namespace{ExclusionVolumeTravelAvoidance.cpp}::SegmentIntersection:
Class Members
size_t edge_idx { 0 }
Point point
double t { 0.0 }