OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::AABBTreeLines::LinesDistancer< LineType > Class Template Reference

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/libslic3r/AABBTreeLines.hpp>

Inheritance diagram for Slic3r::AABBTreeLines::LinesDistancer< LineType >:
Collaboration diagram for Slic3r::AABBTreeLines::LinesDistancer< LineType >:

Public Types

using Scalar = typename LineType::Scalar
using Floating = typename std::conditional<std::is_floating_point<Scalar>::value, Scalar, double>::type

Public Member Functions

 LinesDistancer (const std::vector< LineType > &lines)
 LinesDistancer (std::vector< LineType > &&lines)
 LinesDistancer ()=default
int outside (const Vec< LineType::Dim, Scalar > &point) const
template<bool SIGNED_DISTANCE>
std::tuple< Floating, size_t, Vec< LineType::Dim, Floating > > distance_from_lines_extra (const Vec< LineType::Dim, Scalar > &point) const
template<bool SIGNED_DISTANCE>
Floating distance_from_lines (const Vec< LineType::Dim, typename LineType::Scalar > &point) const
std::vector< size_t > all_lines_in_radius (const Vec< LineType::Dim, Scalar > &point, Floating radius) const
template<bool sorted>
std::vector< std::pair< Vec< LineType::Dim, Scalar >, size_t > > intersections_with_line (const LineType &line) const
const LineType & get_line (size_t line_idx) const
const std::vector< LineType > & get_lines () const

Private Attributes

std::vector< LineType > lines
AABBTreeIndirect::Tree< LineType::Dim, Scalar > tree

Detailed Description

template<typename LineType>
class Slic3r::AABBTreeLines::LinesDistancer< LineType >

Member Typedef Documentation

◆ Floating

template<typename LineType>
using Slic3r::AABBTreeLines::LinesDistancer< LineType >::Floating = typename std::conditional<std::is_floating_point<Scalar>::value, Scalar, double>::type

◆ Scalar

template<typename LineType>
using Slic3r::AABBTreeLines::LinesDistancer< LineType >::Scalar = typename LineType::Scalar

Constructor & Destructor Documentation

◆ LinesDistancer() [1/3]

template<typename LineType>
Slic3r::AABBTreeLines::LinesDistancer< LineType >::LinesDistancer ( const std::vector< LineType > & lines)
inlineexplicit
318 : lines(lines)
319 {
321 }
AABBTreeIndirect::Tree< LineType::Dim, Scalar > tree
Definition AABBTreeLines.hpp:314
std::vector< LineType > lines
Definition AABBTreeLines.hpp:313
AABBTreeIndirect::Tree< LineType::Dim, typename LineType::Scalar > build_aabb_tree_over_indexed_lines(const std::vector< LineType > &lines)
Definition AABBTreeLines.hpp:172

◆ LinesDistancer() [2/3]

template<typename LineType>
Slic3r::AABBTreeLines::LinesDistancer< LineType >::LinesDistancer ( std::vector< LineType > && lines)
inlineexplicit

◆ LinesDistancer() [3/3]

template<typename LineType>
Slic3r::AABBTreeLines::LinesDistancer< LineType >::LinesDistancer ( )
default

Member Function Documentation

◆ all_lines_in_radius()

template<typename LineType>
std::vector< size_t > Slic3r::AABBTreeLines::LinesDistancer< LineType >::all_lines_in_radius ( const Vec< LineType::Dim, Scalar > & point,
Floating radius ) const
inline
362 {
364 }
Definition AABBTreeLines.hpp:307
std::vector< size_t > all_lines_in_radius(const std::vector< LineType > &lines, const TreeType &tree, const VectorType &point, typename VectorType::Scalar max_distance_squared)
Definition AABBTreeLines.hpp:229

Referenced by Slic3r::Algorithm::do_split_line(), Slic3r::GCode::extrude_loop(), Slic3r::FillAdaptive::multiline_paths(), and Slic3r::support_offset_at_start().

Here is the caller graph for this function:

◆ distance_from_lines()

template<typename LineType>
template<bool SIGNED_DISTANCE>
Floating Slic3r::AABBTreeLines::LinesDistancer< LineType >::distance_from_lines ( const Vec< LineType::Dim, typename LineType::Scalar > & point) const
inline
356 {
358 return dist;
359 }
std::tuple< Floating, size_t, Vec< LineType::Dim, Floating > > distance_from_lines_extra(const Vec< LineType::Dim, Scalar > &point) const
Definition AABBTreeLines.hpp:336

Referenced by Slic3r::SupportSpotsGenerator::estimate_malformations(), Slic3r::generate_extra_perimeters_over_overhangs(), Slic3r::paths_touch(), Slic3r::segment_is_supported(), and Slic3r::wipe_path_support_score().

Here is the caller graph for this function:

◆ distance_from_lines_extra()

template<typename LineType>
template<bool SIGNED_DISTANCE>
std::tuple< Floating, size_t, Vec< LineType::Dim, Floating > > Slic3r::AABBTreeLines::LinesDistancer< LineType >::distance_from_lines_extra ( const Vec< LineType::Dim, Scalar > & point) const
inline
337 {
338 size_t nearest_line_index_out = size_t(-1);
342
343 if (distance < 0) {
345 }
347
348 if (SIGNED_DISTANCE) {
350 }
351
353 }
int outside(const Vec< LineType::Dim, Scalar > &point) const
Definition AABBTreeLines.hpp:332
VectorType::Scalar squared_distance_to_indexed_lines(const std::vector< LineType > &lines, const TreeType &tree, const VectorType &point, size_t &hit_idx_out, Eigen::PlainObjectBase< VectorType > &hit_point_out, typename VectorType::Scalar max_sqr_dist=std::numeric_limits< typename VectorType::Scalar >::infinity())
Definition AABBTreeLines.hpp:211
auto cast(const BoundingBoxBase< Tin > &b)
Definition BoundingBox.hpp:299

Referenced by Slic3r::AABBTreeLines::LinesDistancer< Linef3 >::distance_from_lines(), Slic3r::SupportSpotsGenerator::estimate_malformations(), Slic3r::precompute_overhang_layer(), Slic3r::segment_is_supported(), Slic3r::support_offset_at_start(), and Slic3r::wipe_path_stays_on_material_side().

Here is the caller graph for this function:

◆ get_line()

template<typename LineType>
const LineType & Slic3r::AABBTreeLines::LinesDistancer< LineType >::get_line ( size_t line_idx) const
inline
371{ return lines[line_idx]; }

Referenced by Slic3r::SupportSpotsGenerator::estimate_malformations(), Slic3r::segment_is_supported(), and Slic3r::support_offset_at_start().

Here is the caller graph for this function:

◆ get_lines()

template<typename LineType>
const std::vector< LineType > & Slic3r::AABBTreeLines::LinesDistancer< LineType >::get_lines ( ) const
inline
373{ return lines; }

Referenced by Slic3r::Algorithm::do_split_line(), Slic3r::SupportSpotsGenerator::estimate_malformations(), Slic3r::join_close_ends(), Slic3r::wipe_path_stays_on_material_side(), and Slic3r::wipe_path_support_score().

Here is the caller graph for this function:

◆ intersections_with_line()

template<typename LineType>
template<bool sorted>
std::vector< std::pair< Vec< LineType::Dim, Scalar >, size_t > > Slic3r::AABBTreeLines::LinesDistancer< LineType >::intersections_with_line ( const LineType & line) const
inline

Referenced by Slic3r::initial_connector_is_clear(), and Slic3r::join_close_ends().

Here is the caller graph for this function:

◆ outside()

template<typename LineType>
int Slic3r::AABBTreeLines::LinesDistancer< LineType >::outside ( const Vec< LineType::Dim, Scalar > & point) const
inline
int point_outside_closed_contours(const std::vector< LineType > &lines, const TreeType &tree, const VectorType &point)
Definition AABBTreeLines.hpp:248

Referenced by Slic3r::AABBTreeLines::LinesDistancer< Linef3 >::distance_from_lines_extra().

Here is the caller graph for this function:

Member Data Documentation

◆ lines

template<typename LineType>
std::vector<LineType> Slic3r::AABBTreeLines::LinesDistancer< LineType >::lines
private

◆ tree

template<typename LineType>
AABBTreeIndirect::Tree<LineType::Dim, Scalar> Slic3r::AABBTreeLines::LinesDistancer< LineType >::tree
private

The documentation for this class was generated from the following file: