Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
Slic3r::Geometry::PiecewiseFittedCurve< Dimension, NumberType, KernelType > Struct Template Reference

#include <src/libslic3r/Geometry/Curves.hpp>

Public Types

using Kernel = KernelType
 

Public Member Functions

Vec< Dimension, NumberType > get_fitted_value (const NumberType &observation_point) const
 

Public Attributes

Eigen::MatrixXf coefficients
 
NumberType start
 
NumberType segment_size
 
size_t endpoints_level_of_freedom
 

Detailed Description

template<size_t Dimension, typename NumberType, typename KernelType>
struct Slic3r::Geometry::PiecewiseFittedCurve< Dimension, NumberType, KernelType >

Member Typedef Documentation

◆ Kernel

template<size_t Dimension, typename NumberType , typename KernelType >
using Slic3r::Geometry::PiecewiseFittedCurve< Dimension, NumberType, KernelType >::Kernel = KernelType

Member Function Documentation

◆ get_fitted_value()

template<size_t Dimension, typename NumberType , typename KernelType >
Vec< Dimension, NumberType > Slic3r::Geometry::PiecewiseFittedCurve< Dimension, NumberType, KernelType >::get_fitted_value ( const NumberType &  observation_point) const
inline
70 {
71 Vec<Dimension, NumberType> result = Vec<Dimension, NumberType>::Zero();
72
73 //find corresponding segment index; expects kernels to be centered
74 int middle_right_segment_index = floor((observation_point - start) / segment_size);
75 //find index of first segment that is affected by the point i; this can be deduced from kernel_span
76 int start_segment_idx = middle_right_segment_index - Kernel::kernel_span / 2 + 1;
77 for (int segment_index = start_segment_idx; segment_index < int(start_segment_idx + Kernel::kernel_span);
78 segment_index++) {
79 NumberType segment_start = start + segment_index * segment_size;
80 NumberType normalized_segment_distance = (segment_start - observation_point) / segment_size;
81
82 int parameter_index = segment_index + endpoints_level_of_freedom;
83 parameter_index = std::clamp(parameter_index, 0, int(coefficients.cols()) - 1);
84 result += Kernel::kernel(normalized_segment_distance) * coefficients.col(parameter_index);
85 }
86 return result;
87 }
EIGEN_DEVICE_FUNC const FloorReturnType floor() const
Definition ArrayCwiseUnaryOps.h:388
size_t endpoints_level_of_freedom
Definition Curves.hpp:68
Eigen::MatrixXf coefficients
Definition Curves.hpp:65
NumberType start
Definition Curves.hpp:66
NumberType segment_size
Definition Curves.hpp:67

References Slic3r::Geometry::PiecewiseFittedCurve< Dimension, NumberType, KernelType >::coefficients, Slic3r::Geometry::PiecewiseFittedCurve< Dimension, NumberType, KernelType >::endpoints_level_of_freedom, floor(), Slic3r::Geometry::PiecewiseFittedCurve< Dimension, NumberType, KernelType >::segment_size, and Slic3r::Geometry::PiecewiseFittedCurve< Dimension, NumberType, KernelType >::start.

+ Here is the call graph for this function:

Member Data Documentation

◆ coefficients

template<size_t Dimension, typename NumberType , typename KernelType >
Eigen::MatrixXf Slic3r::Geometry::PiecewiseFittedCurve< Dimension, NumberType, KernelType >::coefficients

◆ endpoints_level_of_freedom

template<size_t Dimension, typename NumberType , typename KernelType >
size_t Slic3r::Geometry::PiecewiseFittedCurve< Dimension, NumberType, KernelType >::endpoints_level_of_freedom

◆ segment_size

template<size_t Dimension, typename NumberType , typename KernelType >
NumberType Slic3r::Geometry::PiecewiseFittedCurve< Dimension, NumberType, KernelType >::segment_size

◆ start

template<size_t Dimension, typename NumberType , typename KernelType >
NumberType Slic3r::Geometry::PiecewiseFittedCurve< Dimension, NumberType, KernelType >::start

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