664 {
669 if (
radial_field.mode() == AdaptiveInfillMode::SmoothBlend) {
670
671 auto lattice = [this, x, y](int level) {
672 const double frequency =
tpms.surface_frequency *
levels.scale(level);
673 return tpms.equation(
float(frequency * x),
float(frequency * y),
float(frequency *
z));
674 };
676 return lattice(0);
678 const int k = std::min(
int(c),
levels.count - 1);
679 const double u = c - k;
680 const double w = u * u * (3. - 2. * u);
681 return float((w < 1. ? (1. - w) * lattice(k) : 0.) + (w > 0. ? w * lattice(k + 1) : 0.));
682 }
686 float value = 0.f;
687 for (
size_t i = 0; i <
count; ++i) {
688 const auto &[
center, t, weight] = radials[i];
690 if (axis >= 0)
691 q[axis] =
tpms.interior_frequency * obj[axis];
693 }
694 return value;
695 }
static unsigned int count
Definition AuxiliaryDataViewModel.cpp:246
std::array< Radial, 2 *MaxMorph > Radials
Definition AdaptiveInfillField.hpp:47
Kernel::Point_3 Point
Definition MeshRepair.cpp:81
Eigen::Matrix< double, 3, 1, Eigen::DontAlign > Vec3d
Definition Point.hpp:68
void center(ExPolygonsWithIds &e)
Definition Emboss.cpp:1382
constexpr Eigen::Matrix< Tout, 2, EigenArgs... > unscaled(const Slic3r::Point &v) noexcept
Definition Arrange.cpp:81
Point to_Point(const Coord &p) const
Definition AdaptiveInfillField.cpp:699