首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C或C++中,有没有一个函数可以对一个整数做“饱和度”运算

在C或C++中,有没有一个函数可以对一个整数做“饱和度”运算
EN

Stack Overflow用户
提问于 2010-12-07 04:09:27
回答 5查看 17.6K关注 0票数 9

我正在做一些3D图形,我有一个开阔的海洋。对于这个海洋,我有一个矩阵来表示海洋中特定矩形部分的海洋状态(即波高)。海洋的其余部分是平坦的。我的问题是,我控制的有波浪的海域位于开阔的平坦海域的中间,网格边缘的不连续导致了一些糟糕的伪影。我只为一个部分而不是整个海洋生成波浪的原因是因为我的噪声函数在整个海洋上的计算成本高得令人望而却步(我知道最简单的解决方案是使用更便宜的噪声函数,如单工噪声,但这不是一个选项)。

话虽如此,我的问题确实相当简单。假设我有一个大小为100x40的网格(也就是矩阵),我想要找到位置120x33的值,我只想取最近的邻居,它将是100x33。因此,对于任何超出给定范围的数字,我希望该数字饱和,使其位于给定范围内。在C或C++中有没有这样做的函数?

编辑:位置参数的类型为浮点

我知道我可以通过一些简单的if语句来做到这一点,但它看起来就像是标准库所包含的东西。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-12-07 04:25:05

代码语言:javascript
运行
复制
template<typename T>
T saturate(T val, T min, T max) {
    return std::min(std::max(val, min), max);
}
票数 9
EN

Stack Overflow用户

发布于 2018-01-18 22:50:25

现在有了,以std::clamp的形式。而我仅仅晚了七年:)

票数 10
EN

Stack Overflow用户

发布于 2010-12-07 07:13:57

ISO/IEC JTC1 SC22 WG14 N1169 (Programming languages -C- Extensions to support embedded processors)为饱和数据类型指定了_Sat类型限定符。我从未尝试在任何编译器中使用它,但它包含在GCC 4.x documentation中。

VC++ 2003及更高版本支持允许饱和算法的MMX intrinsics

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4370474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档