我试图通过使用AMD提供的Smoothstep
函数在图表上绘制一些结果,该函数在此维基百科页面Smoothstep上有用。使用;
AMD [4]提供的C / C ++示例实现如下。
float smoothstep(float edge0, float edge1, float x)
{
// Scale, bias and saturate x to 0..1 range
x = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
// Evaluate polynomial
return x*x*(3 - 2 * x);
}
问题是由于static method clamp
无法使用,我无法使用此方法。
我已导入以下内容;
#include <math.h>
#include <cmath>
#include <algorithm>
然而,没有定义clamp
方法。
我的数学技能不是最好的,但有没有办法实现Smoothstep function
,就像有办法实现LERP function
;
float linearIntepolate(float currentLocation, float Goal, float time){
return (1 - time) * currentLocation + time * Goal;
}
答案 0 :(得分:1)
也许只是命名空间&#34; std&#34;缺少的:这是我编译的代码:
#include <algorithm>
float smoothstep(float edge0, float edge1, float x) {
// Scale, bias and saturate x to 0..1 range
x = std::clamp((x - edge0) / (edge1 - edge0), 0.0f, 1.0f);
// Evaluate polynomial
return x * x * (3 - 2 * x);
}