This question already has answers here:
Fastest way to clamp a real (fixed/floating point) value?
(14 个回答)
6年前关闭。
我想创建一个简单的结构来存储颜色的 RGB 值。 r、g 和 b 应该是 [0,1] 中的双数。
有没有比使用 if 语句更好的方法?
并在您的构造函数中使用它:
(14 个回答)
6年前关闭。
我想创建一个简单的结构来存储颜色的 RGB 值。 r、g 和 b 应该是 [0,1] 中的双数。
struct Color
{
Color(double x): r{x}, g{x}, b{x} {
if (r < 0.0) r = 0.0;
if (r > 1.0) r = 1.0;
if (g < 0.0) g = 0.0;
if (g > 1.0) g = 1.0;
if (b < 0.0) b = 0.0;
if (b > 1.0) b = 1.0;
}
}
有没有比使用 if 语句更好的方法?
最佳答案
只需编写一个函数来钳位:
double clamp(double val, double left = 0.0, double right = 1.0) {
return std::min(std::max(val, left), right);
}
并在您的构造函数中使用它:
Color(double x)
: r{clamp(x)}
, g{clamp(x)}
, b{clamp(x)}
{ }
关于c++ - struct 成员的限制值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30016062/
10-08 21:33