OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
AvoidCrossingPerimeters.cpp File Reference
#include "../Layer.hpp"
#include "../GCode.hpp"
#include "../EdgeGrid.hpp"
#include "../Print.hpp"
#include "../Polygon.hpp"
#include "../ExPolygon.hpp"
#include "../Geometry.hpp"
#include "../ClipperUtils.hpp"
#include "libslic3r/Line.hpp"
#include "libslic3r/libslic3r.h"
#include "libslic3r/Point.hpp"
#include "libslic3r/Utils.hpp"
#include "libslic3r/Polyline.hpp"
#include "libslic3r/BoundingBox.hpp"
#include "libslic3r/Flow.hpp"
#include "libslic3r/Surface.hpp"
#include "libslic3r/Config.hpp"
#include "AvoidCrossingPerimeters.hpp"
#include <cstddef>
#include <boost/container_hash/hash.hpp>
#include <cassert>
#include <limits>
#include <algorithm>
#include <iterator>
#include <cmath>
#include <math.h>
#include <numeric>
#include <unordered_set>
#include <boost/range/adaptor/reversed.hpp>
#include <vector>
#include <utility>
#include "libslic3r/Extruder.hpp"
#include "libslic3r/GCodeWriter.hpp"
#include "libslic3r/PrintConfig.hpp"
#include "libslic3r/SurfaceCollection.hpp"
Include dependency graph for AvoidCrossingPerimeters.cpp:

Go to the source code of this file.

Classes

struct  Slic3r::TravelPoint
struct  Slic3r::Intersection
struct  Slic3r::ClosestLine
struct  Slic3r::AllIntersectionsVisitor
struct  Slic3r::FirstIntersectionVisitor
struct  Slic3r::MinDistanceVisitor

Namespaces

namespace  Slic3r
 |/ Copyright (c) Prusa Research 2020 - 2023 Enrico Turri @enricoturri1966 |/ |/ PrusaSlicer is released under the terms of the AGPLv3 or higher |/

Enumerations

enum class  Slic3r::Direction { Slic3r::Forward , Slic3r::Backward }

Functions

static std::vector< ClosestLine > Slic3r::get_closest_lines_in_radius (const EdgeGrid::Grid &grid, const Point &center, float search_radius)
static std::vector< Intersection > Slic3r::extend_for_closest_lines (const std::vector< Intersection > &intersections, const AvoidCrossingPerimeters::Boundary &boundary, const Point &start, const Point &end, const float search_radius)
template<bool forward>
static Point Slic3r::find_first_different_vertex (const Polygon &polygon, const size_t point_idx, const Point &point)
static Vec2d Slic3r::three_points_inward_normal (const Point &left, const Point &middle, const Point &right)
static Vec2d Slic3r::get_polygon_vertex_inward_normal (const Polygon &polygon, const size_t point_idx)
static Point Slic3r::get_polygon_vertex_offset (const Polygon &polygon, const size_t point_idx, const int offset)
static Point Slic3r::get_middle_point_offset (const Polygon &polygon, const size_t left_idx, const size_t right_idx, const Point &middle, const coord_t offset)
static Polyline Slic3r::to_polyline (const std::vector< TravelPoint > &travel)
static Direction Slic3r::get_shortest_direction (const AvoidCrossingPerimeters::Boundary &boundary, const Intersection &intersection_first, const Intersection &intersection_second, float contour_length)
Polyline Slic3r::ConvertBBoxToPolyline (const BoundingBoxf &bbox)
static std::vector< TravelPoint > Slic3r::simplify_travel (const AvoidCrossingPerimeters::Boundary &boundary, const std::vector< TravelPoint > &travel)
static float Slic3r::get_default_perimeter_spacing (const PrintObject &print_object)
static float Slic3r::get_perimeter_spacing (const Layer &layer)
static float Slic3r::get_perimeter_spacing_external (const Layer &layer)
static float Slic3r::get_external_perimeter_width (const Layer &layer)
static size_t Slic3r::avoid_perimeters_inner (const AvoidCrossingPerimeters::Boundary &boundary, const Point &start_point, const Point &end_point, const Layer &layer, std::vector< TravelPoint > &result_out)
static size_t Slic3r::avoid_perimeters (const AvoidCrossingPerimeters::Boundary &boundary, const Point &start, const Point &end, const Layer &layer, Polyline &result_out)
static bool Slic3r::any_expolygon_contains (const ExPolygons &ex_polygons, const std::vector< BoundingBox > &ex_polygons_bboxes, const EdgeGrid::Grid &grid_lslice, const Line &travel)
static bool Slic3r::any_expolygon_contains (const ExPolygons &ex_polygons, const std::vector< BoundingBox > &ex_polygons_bboxes, const EdgeGrid::Grid &grid_lslice, const Polyline &travel)
static bool Slic3r::need_wipe (const GCode &gcodegen, const ExPolygons &lslices_offset, const std::vector< BoundingBox > &lslices_offset_bboxes, const EdgeGrid::Grid &grid_lslices_offset, const Line &original_travel, const Polyline &result_travel, const size_t intersection_count)
static void Slic3r::resample_polygon (Polygon &polygon, double dist_from_vertex, double max_allowed_distance)
static void Slic3r::resample_expolygon (ExPolygon &ex_polygon, double dist_from_vertex, double max_allowed_distance)
static void Slic3r::resample_expolygons (ExPolygons &ex_polygons, double dist_from_vertex, double max_allowed_distance)
static void Slic3r::precompute_polygon_distances (const Polygon &polygon, std::vector< float > &polygon_distances_out)
static void Slic3r::precompute_expolygon_distances (const ExPolygon &ex_polygon, std::vector< std::vector< float > > &expolygon_distances_out)
static std::vector< float > Slic3r::contour_distance (const EdgeGrid::Grid &grid, const std::vector< float > &poly_distances, const size_t contour_idx, const Polygon &polygon, double compensation, double search_radius)
static ExPolygons Slic3r::inner_offset (const ExPolygons &ex_polygons, double offset_dis)
static ExPolygons Slic3r::get_boundary (const Layer &layer, float perimeter_spacing)
static Polygons Slic3r::get_boundary_external (const Layer &layer)
static void Slic3r::init_boundary_distances (AvoidCrossingPerimeters::Boundary *boundary)
void Slic3r::init_boundary (AvoidCrossingPerimeters::Boundary *boundary, Polygons &&boundary_polygons)
static void Slic3r::init_boundary (AvoidCrossingPerimeters::Boundary *boundary, Polygons &&boundary_polygons, const std::vector< Point > &merge_poins)

Class Documentation

◆ Slic3r::TravelPoint

struct Slic3r::TravelPoint
Collaboration diagram for Slic3r::TravelPoint:
Class Members
int border_idx
bool do_not_remove = false
Point point

◆ Slic3r::Intersection

struct Slic3r::Intersection
Collaboration diagram for Slic3r::Intersection:
Class Members
size_t border_idx
float distance
bool do_not_remove = false
size_t line_idx
Point point

◆ Slic3r::ClosestLine

struct Slic3r::ClosestLine
Collaboration diagram for Slic3r::ClosestLine:
Class Members
size_t border_idx
size_t line_idx
Point point