3

我正在尝试使用SmoothstepAMD 提供的函数在图表上绘制一些结果,该函数在此 Wikipedia 页面Smoothstep上提供。使用;

AMD[4] 提供的 AC/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;
}
4

1 回答 1

3

也许只是缺少名称空间“std”:这是我的编译代码:

#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);
}
于 2018-06-12T11:21:04.257 回答