OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::Measure::Polynomial1 Class Reference

#include </home/runner/work/OrcaSlicer/OrcaSlicer/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
24 {
25 // C++ 11 will call the default constructor for
26 // Polynomial1<Real> p{}, so it is guaranteed that
27 // values.size() > 0.
28 m_coefficient.resize(values.size());
29 std::copy(values.begin(), values.end(), m_coefficient.begin());
31 }
std::vector< double > m_coefficient
Definition MeasureUtils.hpp:98
void EliminateLeadingZeros()
Definition MeasureUtils.hpp:53

References EliminateLeadingZeros(), and m_coefficient.

Here is the call graph for this function:

◆ Polynomial1() [2/2]

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

References m_coefficient.

Member Function Documentation

◆ EliminateLeadingZeros()

void Slic3r::Measure::Polynomial1::EliminateLeadingZeros ( )
inline
54 {
55 const size_t size = m_coefficient.size();
56 if (size > 1) {
57 const double zero = 0.0;
58 int32_t leading;
59 for (leading = static_cast<int32_t>(size) - 1; leading > 0; --leading) {
60 if (m_coefficient[leading] != zero)
61 break;
62 }
63
64 m_coefficient.resize(++leading);
65 }
66 }

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
75 {
76 // By design, m_coefficient.size() > 0.
77 return static_cast<uint32_t>(m_coefficient.size() - 1);
78 }

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
86 {
87 int32_t i = static_cast<int32_t>(m_coefficient.size());
88 double result = m_coefficient[--i];
89 for (--i; i >= 0; --i) {
90 result *= t;
91 result += m_coefficient[i];
92 }
93 return result;
94 }

References m_coefficient.

◆ operator[]() [1/2]

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

References m_coefficient.

◆ operator[]() [2/2]

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

References m_coefficient.

◆ SetCoefficients()

void Slic3r::Measure::Polynomial1::SetCoefficients ( double value)
inline
70 {
71 std::fill(m_coefficient.begin(), m_coefficient.end(), value);
72 }

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: