OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
AdaptiveInfillField.cpp File Reference
#include "AdaptiveInfillField.hpp"
#include <algorithm>
#include <array>
#include <cassert>
#include <cmath>
#include <cstddef>
#include <deque>
#include <functional>
#include <limits>
#include <utility>
#include <vector>
#include <tbb/blocked_range.h>
#include <tbb/parallel_for.h>
#include "../BoundingBox.hpp"
#include "../ClipperUtils.hpp"
#include "../ExPolygon.hpp"
#include "FillBase.hpp"
#include "../Execution/ExecutionTBB.hpp"
#include "../MarchingSquares.hpp"
#include "../Point.hpp"
#include "../Polygon.hpp"
#include "../Polyline.hpp"
#include "../PrintConfig.hpp"
#include "../libslic3r.h"
Include dependency graph for AdaptiveInfillField.cpp:

Go to the source code of this file.

Classes

struct  Slic3r::anonymous_namespace{AdaptiveInfillField.cpp}::DensityLevels
class  Slic3r::anonymous_namespace{AdaptiveInfillField.cpp}::RadialScale
struct  marchsq::AdaptiveTpmsField
struct  marchsq::_RasterTraits< AdaptiveTpmsField >
struct  marchsq::AdaptiveLevelField
struct  marchsq::_RasterTraits< AdaptiveLevelField >

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{AdaptiveInfillField.cpp}
namespace  marchsq

Functions

void Slic3r::anonymous_namespace{AdaptiveInfillField.cpp}::distance_transform_line (const float *f, float *d, int n, int *v, double *s)
void Slic3r::anonymous_namespace{AdaptiveInfillField.cpp}::distance_transform_axis (std::vector< float > &grid, const Vec3i32 &size, int axis, const std::function< void()> &throw_if_canceled)
void Slic3r::anonymous_namespace{AdaptiveInfillField.cpp}::rasterize (const ExPolygons &expolygons, const Vec2d &origin, double cell, int nx, int ny, float *nodes)
double Slic3r::anonymous_namespace{AdaptiveInfillField.cpp}::target_scale (double ratio, AdaptiveInfillGradient gradient, double depth)
Polylines Slic3r::make_adaptive_tpms (const AdaptiveTpms &tpms, const AdaptiveInfillField &field, BoundingBox bbox, coordf_t z, coordf_t layer_height, coordf_t spacing, float angle)
std::vector< AdaptiveInfillShell > Slic3r::make_adaptive_infill_shells (const AdaptiveInfillField &field, const ExPolygon &expolygon, coordf_t z, float surface_density, float interior_density, AdaptiveInfillGradient gradient)
void Slic3r::fill_adaptive_infill_shells (const AdaptiveInfillField &field, const ExPolygon &expolygon, coordf_t z, const FillParams &params, coordf_t spacing, const std::function< void(const FillParams &, const ExPolygon &)> &fill_shell)

Variables

constexpr double Slic3r::anonymous_namespace{AdaptiveInfillField.cpp}::MaxNodes = double(1 << 20)
constexpr double Slic3r::anonymous_namespace{AdaptiveInfillField.cpp}::MinCellSize = 0.5
constexpr double Slic3r::anonymous_namespace{AdaptiveInfillField.cpp}::NeckRatio = 0.8
constexpr double Slic3r::anonymous_namespace{AdaptiveInfillField.cpp}::MinLobeRatio = 0.3
constexpr double Slic3r::anonymous_namespace{AdaptiveInfillField.cpp}::LobeReach = 2.
constexpr double Slic3r::anonymous_namespace{AdaptiveInfillField.cpp}::LobeMorph = 0.1
constexpr double Slic3r::anonymous_namespace{AdaptiveInfillField.cpp}::ShellRatio = 1.5
constexpr double Slic3r::anonymous_namespace{AdaptiveInfillField.cpp}::BlendRatio = 2.5
constexpr int Slic3r::anonymous_namespace{AdaptiveInfillField.cpp}::Samples = 32
constexpr float Slic3r::anonymous_namespace{AdaptiveInfillField.cpp}::InfF = std::numeric_limits<float>::infinity()
constexpr double Slic3r::anonymous_namespace{AdaptiveInfillField.cpp}::InfD = std::numeric_limits<double>::infinity()