OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::trianglulate_wall_detail::Triangulator< Sc > Class Template Reference

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

Collaboration diagram for Slic3r::trianglulate_wall_detail::Triangulator< Sc >:

Public Member Functions

void run (std::vector< Vec3i32 > &indices)
 Triangulator (const std::vector< Vec< 3, Sc > > *points, Ring &lower, Ring &upper)

Private Member Functions

double calc_score () const
void synchronize_rings ()
void emplace_indices (std::vector< Vec3i32 > &indices)

Private Attributes

const std::vector< Vec< 3, Sc > > * pts
Ring * onring
Ring * offring

Detailed Description

template<class Sc>
class Slic3r::trianglulate_wall_detail::Triangulator< Sc >

Constructor & Destructor Documentation

◆ Triangulator()

template<class Sc>
Slic3r::trianglulate_wall_detail::Triangulator< Sc >::Triangulator ( const std::vector< Vec< 3, Sc > > * points,
Ring & lower,
Ring & upper )
inlineexplicit
115 {}
Definition TriangulateWall.hpp:60
Ring * offring
Definition TriangulateWall.hpp:62
Ring * onring
Definition TriangulateWall.hpp:62
const std::vector< Vec< 3, Sc > > * pts
Definition TriangulateWall.hpp:61

References offring, onring, and pts.

Member Function Documentation

◆ calc_score()

template<class Sc>
double Slic3r::trianglulate_wall_detail::Triangulator< Sc >::calc_score ( ) const
inlineprivate
65 {
66 return trscore(*onring, *offring, *pts);
67 }
static Sc trscore(const Ring &onring, const Ring &offring, const std::vector< Vec< 3, Sc > > &pts)
Definition TriangulateWall.hpp:50

References offring, onring, pts, and Slic3r::trianglulate_wall_detail::trscore().

Referenced by run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emplace_indices()

template<class Sc>
void Slic3r::trianglulate_wall_detail::Triangulator< Sc >::emplace_indices ( std::vector< Vec3i32 > & indices)
inlineprivate
87 {
88 Vec3i32 tr{int(onring->pos().first), int(onring->pos().second),
89 int(offring->pos().first)};
90 if (onring->is_lower()) std::swap(tr(0), tr(1));
91 indices.emplace_back(tr);
92 }

References offring, and onring.

Referenced by run().

Here is the caller graph for this function:

◆ run()

template<class Sc>
void Slic3r::trianglulate_wall_detail::Triangulator< Sc >::run ( std::vector< Vec3i32 > & indices)
inline
96 {
98
99 double score = 0, prev_score = 0;
100 while (!onring->is_finished() || !offring->is_finished()) {
102 if (onring->is_finished() || (score = calc_score()) > prev_score) {
104 } else {
106 onring->inc();
107 }
108 }
109 }
double calc_score() const
Definition TriangulateWall.hpp:64
void synchronize_rings()
Definition TriangulateWall.hpp:69
void emplace_indices(std::vector< Vec3i32 > &indices)
Definition TriangulateWall.hpp:86

References calc_score(), emplace_indices(), offring, onring, and synchronize_rings().

Here is the call graph for this function:

◆ synchronize_rings()

template<class Sc>
void Slic3r::trianglulate_wall_detail::Triangulator< Sc >::synchronize_rings ( )
inlineprivate
70 {
72 auto minsc = trscore(*onring, lring, *pts);
73 size_t imin = lring.pos().first;
74
75 lring.inc();
76
77 while(!lring.is_finished()) {
78 double score = trscore(*onring, lring, *pts);
79 if (score < minsc) { minsc = score; imin = lring.pos().first; }
80 lring.inc();
81 }
82
83 offring->init(imin);
84 }

References Slic3r::trianglulate_wall_detail::Ring::inc(), Slic3r::trianglulate_wall_detail::Ring::is_finished(), offring, onring, Slic3r::trianglulate_wall_detail::Ring::pos(), pts, and Slic3r::trianglulate_wall_detail::trscore().

Referenced by run().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ offring

◆ onring

◆ pts

template<class Sc>
const std::vector<Vec<3, Sc> >* Slic3r::trianglulate_wall_detail::Triangulator< Sc >::pts
private

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