Przy założeniu, że lewa krawędź to 0, a prawa krawędź to 1, wzór ma postać:

Poniżej przedstawiono zmodyfikowany przykład implementacji w języku C/C++ udostępniony przez firmę AMD .float smoothstep (float edge0, float edge1, float x) { // Scale, and clamp x to 0..1 range x = clamp((x - edge0) / (edge1 - edge0));

return x * x * (3.0f - 2.0f * x); }

float clamp(float x, float lowerlimit = 0.0f, float upperlimit = 1.0f) { if (x < lowerlimit) return lowerlimit; if (x > upperlimit) return upperlimit; return x; }Ogólna postać funkcji smoothstep (przy założeniu, że lewa krawędź to 0, a prawa krawędź ma wartość 1) to:

to funkcja zaciskająca (ang. )

Charakterystyczną krzywą sigmoidalną w kształcie litery S uzyskuje się za pomocą tylko dla dodatnich liczb całkowitych n. Stopień wielomianu wykorzystanego w funkcji wynosi 2n + 1. Dla n = 1 nachylenie (czyli pierwsza pochodna funkcji) jest równe zeru na lewej i prawej krawędzi (dla x = 0 i x = 1). Dla wyższych n, drugie i kolejne pochodne są równe zeru na krawędziach.

Przypisy

Kategoria:Algorytmy graficzne