From b42b7b73f206294ca11e1cb9fc450c971eccfb81 Mon Sep 17 00:00:00 2001 From: Julius Nehring-Wirxel <julius.nehring-wirxel@rwth-aachen.de> Date: Mon, 28 Sep 2020 15:10:48 +0200 Subject: [PATCH] normalize now respects the attribute type (i.e. it now works for double) --- src/polymesh/algorithms/normalize.hh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/polymesh/algorithms/normalize.hh b/src/polymesh/algorithms/normalize.hh index e1340d3..970d524 100644 --- a/src/polymesh/algorithms/normalize.hh +++ b/src/polymesh/algorithms/normalize.hh @@ -9,6 +9,8 @@ namespace polymesh template <class Pos3> void normalize(vertex_attribute<Pos3>& pos) { + using ScalarT = std::decay_t<decltype(pos.first()[0])>; + if (pos.mesh().vertices().size() == 0) return; @@ -16,15 +18,15 @@ void normalize(vertex_attribute<Pos3>& pos) auto mi = mm.min; auto ma = mm.max; - auto cx = (mi[0] + ma[0]) * 0.5f; - auto cy = (mi[1] + ma[1]) * 0.5f; - auto cz = (mi[2] + ma[2]) * 0.5f; + auto cx = (mi[0] + ma[0]) * ScalarT(0.5); + auto cy = (mi[1] + ma[1]) * ScalarT(0.5); + auto cz = (mi[2] + ma[2]) * ScalarT(0.5); auto sx = ma[0] - mi[0]; auto sy = ma[1] - mi[1]; auto sz = ma[2] - mi[2]; - auto s = std::max(sx, std::max(sy, sz)) * 0.5f; - s = std::max(s, std::numeric_limits<float>::min()); + auto s = std::max(sx, std::max(sy, sz)) * ScalarT(0.5); + s = std::max(s, std::numeric_limits<ScalarT>::min()); for (auto& p : pos) { -- GitLab