Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortamasmeszaros <meszaros.q@gmail.com>2022-05-09 14:11:01 +0300
committertamasmeszaros <meszaros.q@gmail.com>2022-05-11 11:35:12 +0300
commitfed317f27b5b78e34bdde1ec70a330665027ec88 (patch)
tree4e92fe0103249f2ee10f5861fe833b900f6426a9 /src/libslic3r
parent12a54251c9534162cdb90d46982daa943f4f9372 (diff)
Change std::nan("") to proper nan constants
Diffstat (limited to 'src/libslic3r')
-rw-r--r--src/libslic3r/AABBTreeIndirect.hpp4
-rw-r--r--src/libslic3r/Arrange.hpp2
-rw-r--r--src/libslic3r/Optimize/Optimizer.hpp6
-rw-r--r--src/libslic3r/SLA/Rotfinder.cpp10
-rw-r--r--src/libslic3r/SLA/SupportTreeBuildsteps.cpp2
-rw-r--r--src/libslic3r/SLAPrintSteps.cpp2
-rw-r--r--src/libslic3r/libslic3r.h6
7 files changed, 19 insertions, 13 deletions
diff --git a/src/libslic3r/AABBTreeIndirect.hpp b/src/libslic3r/AABBTreeIndirect.hpp
index 3ea18de8d..31101697f 100644
--- a/src/libslic3r/AABBTreeIndirect.hpp
+++ b/src/libslic3r/AABBTreeIndirect.hpp
@@ -771,8 +771,8 @@ inline bool is_any_triangle_in_radius(
auto distancer = detail::IndexedTriangleSetDistancer<VertexType, IndexedFaceType, TreeType, VectorType>
{ vertices, faces, tree, point };
- size_t hit_idx;
- VectorType hit_point = VectorType::Ones() * (std::nan(""));
+ size_t hit_idx;
+ VectorType hit_point = VectorType::Ones() * (NaN<typename VectorType::Scalar>);
if(tree.empty())
{
diff --git a/src/libslic3r/Arrange.hpp b/src/libslic3r/Arrange.hpp
index 0ff87c88d..47171007a 100644
--- a/src/libslic3r/Arrange.hpp
+++ b/src/libslic3r/Arrange.hpp
@@ -15,7 +15,7 @@ class CircleBed {
double radius_;
public:
- inline CircleBed(): center_(0, 0), radius_(std::nan("")) {}
+ inline CircleBed(): center_(0, 0), radius_(NaNd) {}
explicit inline CircleBed(const Point& c, double r): center_(c), radius_(r) {}
inline double radius() const { return radius_; }
diff --git a/src/libslic3r/Optimize/Optimizer.hpp b/src/libslic3r/Optimize/Optimizer.hpp
index 8ae55c61c..bf95d9ee0 100644
--- a/src/libslic3r/Optimize/Optimizer.hpp
+++ b/src/libslic3r/Optimize/Optimizer.hpp
@@ -41,13 +41,13 @@ template<size_t N> using Bounds = std::array<Bound, N>;
class StopCriteria {
// If the absolute value difference between two scores.
- double m_abs_score_diff = std::nan("");
+ double m_abs_score_diff = NaNd;
// If the relative value difference between two scores.
- double m_rel_score_diff = std::nan("");
+ double m_rel_score_diff = NaNd;
// Stop if this value or better is found.
- double m_stop_score = std::nan("");
+ double m_stop_score = NaNd;
// A predicate that if evaluates to true, the optimization should terminate
// and the best result found prior to termination should be returned.
diff --git a/src/libslic3r/SLA/Rotfinder.cpp b/src/libslic3r/SLA/Rotfinder.cpp
index 196646dc9..847e638e6 100644
--- a/src/libslic3r/SLA/Rotfinder.cpp
+++ b/src/libslic3r/SLA/Rotfinder.cpp
@@ -76,7 +76,7 @@ struct Facestats {
// Try to guess the number of support points needed to support a mesh
double get_misalginment_score(const TriangleMesh &mesh, const Transform3f &tr)
{
- if (mesh.its.vertices.empty()) return std::nan("");
+ if (mesh.its.vertices.empty()) return NaNd;
auto accessfn = [&mesh, &tr](size_t fi) {
Facestats fc{get_transformed_triangle(mesh, tr, fi)};
@@ -117,7 +117,7 @@ inline double get_supportedness_score(const Facestats &fc)
// Try to guess the number of support points needed to support a mesh
double get_supportedness_score(const TriangleMesh &mesh, const Transform3f &tr)
{
- if (mesh.its.vertices.empty()) return std::nan("");
+ if (mesh.its.vertices.empty()) return NaNd;
auto accessfn = [&mesh, &tr](size_t fi) {
Facestats fc{get_transformed_triangle(mesh, tr, fi)};
@@ -149,10 +149,10 @@ float find_ground_level(const TriangleMesh &mesh,
return execution::reduce(ex_tbb, size_t(0), vsize, zmin, minfn, accessfn, granularity);
}
-float get_supportedness_onfloor_score(const TriangleMesh &mesh,
- const Transform3f & tr)
+double get_supportedness_onfloor_score(const TriangleMesh &mesh,
+ const Transform3f &tr)
{
- if (mesh.its.vertices.empty()) return std::nan("");
+ if (mesh.its.vertices.empty()) return NaNd;
size_t Nthreads = std::thread::hardware_concurrency();
diff --git a/src/libslic3r/SLA/SupportTreeBuildsteps.cpp b/src/libslic3r/SLA/SupportTreeBuildsteps.cpp
index aa69fdc77..e4ca3f59c 100644
--- a/src/libslic3r/SLA/SupportTreeBuildsteps.cpp
+++ b/src/libslic3r/SLA/SupportTreeBuildsteps.cpp
@@ -654,7 +654,7 @@ void SupportTreeBuildsteps::filter()
for (const SupportPoint &sp : m_support_pts) {
m_thr();
heads.emplace_back(
- std::nan(""),
+ NaNd,
sp.head_front_radius,
0.,
m_cfg.head_penetration_mm,
diff --git a/src/libslic3r/SLAPrintSteps.cpp b/src/libslic3r/SLAPrintSteps.cpp
index de3e3ae96..fc73aa078 100644
--- a/src/libslic3r/SLAPrintSteps.cpp
+++ b/src/libslic3r/SLAPrintSteps.cpp
@@ -1036,7 +1036,7 @@ void SLAPrint::Steps::merge_slices_and_eval_stats() {
// Estimated printing time
// A layers count o the highest object
if (printer_input.size() == 0)
- print_statistics.estimated_print_time = std::nan("");
+ print_statistics.estimated_print_time = NaNd;
else {
print_statistics.estimated_print_time = estim_time;
print_statistics.layers_times = layers_times;
diff --git a/src/libslic3r/libslic3r.h b/src/libslic3r/libslic3r.h
index 2131a9233..06cad840e 100644
--- a/src/libslic3r/libslic3r.h
+++ b/src/libslic3r/libslic3r.h
@@ -331,6 +331,12 @@ public:
inline bool empty() const { return size() == 0; }
};
+template<class T, class = FloatingOnly<T>>
+constexpr T NaN = std::numeric_limits<T>::quiet_NaN();
+
+constexpr float NaNf = NaN<float>;
+constexpr double NaNd = NaN<double>;
+
} // namespace Slic3r
#endif