C或C中是否有一个函数可以对整数进行“饱和”

新手上路,请多包涵

我正在做一些 3D 图形,我有一片开阔的海洋。对于这个海洋,我有一个矩阵,表示特定矩形海段的海况(即波高)。海洋的其余部分是平坦的。我的问题是,我的受控海(有波浪)位于开阔平坦的大海中间,网格边缘的不连续性会导致一些不良伪影。我只为一小部分而不是整个海洋生成波浪的原因是因为我的噪声函数在整个海洋上计算起来非常昂贵(而且我知道最简单的解决方案是使用更便宜的噪声函数,如单纯形噪声,但这不是一个选项)。

话虽如此,我的问题真的很简单。如果说我有一个大小为 100x40 的网格(又名矩阵又名 2d 数组),并且我想找到位置 120x33 的值,我只想取最近的邻居,即 100x33。因此,对于位于给定范围之外的任何数字,我希望该数字饱和以位于给定范围内。 C 或 C++ 中是否有执行此操作的函数?

编辑:位置参数是浮点类型

我知道我可以用一些简单的 if 语句来做到这一点,但这似乎是标准库中包含的东西。

原文由 lmirosevic 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 592
2 个回答
template<typename T>
T saturate(T val, T min, T max) {
    return std::min(std::max(val, min), max);
}

原文由 etarion 发布,翻译遵循 CC BY-SA 2.5 许可协议

现在有 std::clamp 的形式。而且我只迟到了七年:)

原文由 Quentin 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题