Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
Slic3r::Measure::Polynomial1 Class Reference

#include <src/libslic3r/MeasureUtils.hpp>

+ Collaboration diagram for Slic3r::Measure::Polynomial1:

Public Member Functions

 Polynomial1 (std::initializer_list< double > values)
 
 Polynomial1 (uint32_t degree)
 
void EliminateLeadingZeros ()
 
void SetCoefficients (double value)
 
uint32_t GetDegree () const
 
const double & operator[] (uint32_t i) const
 
double & operator[] (uint32_t i)
 
double operator() (double t) const
 

Protected Attributes

std::vector< double > m_coefficient
 

Detailed Description

Constructor & Destructor Documentation

◆ Polynomial1() [1/2]

Slic3r::Measure::Polynomial1::Polynomial1 ( std::initializer_list< double >  values)
inline
17 {
18 // C++ 11 will call the default constructor for
19 // Polynomial1<Real> p{}, so it is guaranteed that
20 // values.size() > 0.
21 m_coefficient.resize(values.size());
22 std::copy(values.begin(), values.end(), m_coefficient.begin());
24 }
std::vector< double > m_coefficient
Definition MeasureUtils.hpp:91
void EliminateLeadingZeros()
Definition MeasureUtils.hpp:46

References EliminateLeadingZeros(), and m_coefficient.

+ Here is the call graph for this function:

◆ Polynomial1() [2/2]

Slic3r::Measure::Polynomial1::Polynomial1 ( uint32_t  degree)
inlineexplicit
34 : m_coefficient(static_cast<size_t>(degree) + 1, 0.0)
35 {}

Member Function Documentation

◆ EliminateLeadingZeros()

void Slic3r::Measure::Polynomial1::EliminateLeadingZeros ( )
inline
47 {
48 const size_t size = m_coefficient.size();
49 if (size > 1) {
50 const double zero = 0.0;
51 int32_t leading;
52 for (leading = static_cast<int32_t>(size) - 1; leading > 0; --leading) {
53 if (m_coefficient[leading] != zero)
54 break;
55 }
56
57 m_coefficient.resize(++leading);
58 }
59 }
constexpr auto size(const C &c) -> decltype(c.size())
Definition span.hpp:183
__int32 int32_t
Definition unistd.h:75

References m_coefficient.

Referenced by Polynomial1(), Slic3r::Measure::operator+(), and Slic3r::Measure::operator-().

+ Here is the caller graph for this function:

◆ GetDegree()

uint32_t Slic3r::Measure::Polynomial1::GetDegree ( ) const
inline
68 {
69 // By design, m_coefficient.size() > 0.
70 return static_cast<uint32_t>(m_coefficient.size() - 1);
71 }
unsigned __int32 uint32_t
Definition unistd.h:79

References m_coefficient.

Referenced by Slic3r::Measure::get_measurement(), Slic3r::Measure::operator*(), Slic3r::Measure::operator*(), Slic3r::Measure::operator+(), and Slic3r::Measure::operator-().

+ Here is the caller graph for this function:

◆ operator()()

double Slic3r::Measure::Polynomial1::operator() ( double  t) const
inline
79 {
80 int32_t i = static_cast<int32_t>(m_coefficient.size());
81 double result = m_coefficient[--i];
82 for (--i; i >= 0; --i) {
83 result *= t;
84 result += m_coefficient[i];
85 }
86 return result;
87 }

References m_coefficient.

◆ operator[]() [1/2]

double & Slic3r::Measure::Polynomial1::operator[] ( uint32_t  i)
inline
74{ return m_coefficient[i]; }

References m_coefficient.

◆ operator[]() [2/2]

const double & Slic3r::Measure::Polynomial1::operator[] ( uint32_t  i) const
inline
73{ return m_coefficient[i]; }

References m_coefficient.

◆ SetCoefficients()

void Slic3r::Measure::Polynomial1::SetCoefficients ( double  value)
inline
63 {
64 std::fill(m_coefficient.begin(), m_coefficient.end(), value);
65 }

References m_coefficient.

Referenced by Slic3r::Measure::operator*().

+ Here is the caller graph for this function:

Member Data Documentation

◆ m_coefficient

std::vector<double> Slic3r::Measure::Polynomial1::m_coefficient
protected

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