Template Function librapid::smoothStep#

Function Documentation#

template<typename T, typename Lower = T, typename Upper = T, typename std::enable_if_t<typetraits::TypeInfo<T>::type == detail::LibRapidType::Scalar && typetraits::TypeInfo<Lower>::type == detail::LibRapidType::Scalar && typetraits::TypeInfo<Upper>::type == detail::LibRapidType::Scalar, int> = 0, typename ST = typetraits::ScalarReturnType<T>>
ST librapid::smoothStep(T t, Lower lowerEdge = 0, Upper upperEdge = 1)#

Smoothly interpolate between two values.

This smooth step implementation is based on Ken Perlin’s algorithm. \( S(x)= \begin{cases}0 & x \leq 0 \\ 6 x^5-15 x^4+10 x^3 & 0 \leq x \leq 1 \\ 1 & 1 \leq x\end{cases} \)

This function allows you to specify a lower and upper edge, which can be used to scale the range of inputs.

Template Parameters
  • T – Type of t

  • Lower – Type of lowerEdge

  • Upper – Type of upperEdge

Parameters
  • t – Value to smooth step

  • lowerEdge – At t=lowerEdge, the function returns 0

  • upperEdge – At t=upperEdge, the function returns 1

Returns

t interpolated between lowerEdge and upperEdge