Smoothstep

Grafico delle funzioni di primo ordine (smoothstep) e secondo ordine (smootherstep) normalizzate nell'intervallo

Smoothstep è una famiglia di funzioni sigmoidee usate per l'interpolazione hermitiana e per il clamping in computer grafica, motori grafici, e apprendimento automatico.

Le smoothstep sono funzioni di una variabile reale a valori in , caratterizzate da due parametri e rappresentanti gli estremi di un intervallo di valori nel dominio. Per ogni , smoothstep mappa i valori all'intervallo , mentre tutti i valori sono mappati in zero, e tutti i valori sono mappati in 1. Una funzione smoothstep normalizzata ha parametri e . Nel seguito, quando non differentemente specificato, si assume che la funzione smoothstep sia normalizzata.

La funzione smoothstep di ordine interpola i valori tra 0 e 1 in modo tale che:

Una funzione polinomiale che soddisfi tali vincoli può essere definita tramite l'interpolazione di Hermite. La funzione smoothstep per antonomasia è quella di primo ordine , definita da un polinomio di terzo grado:

Restringendo il dominio in , la sua inversa può essere espressa analiticamente come:

La funzione smoothstep di ordine è rappresentata nella porzione centrale da un polinomio di Hermite di grado e ha forma:

La funzione smoothstep di ordine zero è equivalente alla funzione identità troncata (nota in alcuni contesti, ad esempio in computer grafica, come funzione clamp):

La funzione smoothstep di secondo ordine , anche nota come smootherstep e popolarizzata in computer grafica da Ken Perlin, ha forma:

Le successive funzioni smoothstep fino al sesto ordine sono rappresentate nell'intervallo dai seguenti polinomi:

Note

  1. ↑ Smoothstep at Microsoft Developer Network.
  2. ↑ GLSL Language Specification, Version 1.40.
  3. ↑ Unity game engine SmoothStep documentation.
  4. ↑ Hussein Hazimeh, Natalia Ponomareva, Petros Mol, Zhenyu Tan e Rahul Mazumder, The Tree Ensemble Layer: Differentiability meets Conditional Computation (PDF), International Conference on Machine Learning, PMLR, 2020. URL consultato il 30 gennaio 2022 (archiviato dall'url originale il 2 gennaio 2021).
  5. ↑ tfp.math.smootherstep | Tensorflow, su tensorflow.org (archiviato dall'url originale il 2 novembre 2021).
  6. ↑ SmootherStep | Wolfram Function Repository, su resources.wolframcloud.com (archiviato dall'url originale il 18 febbraio 2021).
  7. ↑ Ken Perlin, An Image Synthesizer, ACM SIGGRAPH, vol. 24, n. 3, 1985.
  8. ↑ Ken Perlin, Improving noise, ACM transactions on graphics, vol. 21, n. 3, luglio 2002, pp. 681-682.
  9. ↑ Ken Perlin, Texturing and Modeling, Third Edition: A Procedural Approach.