+
+ void Min(float m) noexcept { xmin = m; Update(); }
+ float Min() const noexcept { return xmin; }
+ void Mid(float m) noexcept { xmid = m; Update(); }
+ float Mid() const noexcept { return xmid; }
+ void Max(float m) noexcept { xmax = m; Update(); }
+ float Max() const noexcept { return xmax; }
+
+ private:
+ void Update() {
+ float abs_min = std::abs(xmin - xmid);
+ inv_neg = abs_min < std::numeric_limits<float>::epsilon() ? 0.0f : 1.0f / abs_min;
+ float abs_max = std::abs(xmax - xmid);
+ inv_pos = abs_max < std::numeric_limits<float>::epsilon() ? 0.0f : 1.0f / abs_max;