2021-11-19 17:22:09 +01:00
|
|
|
#pragma once
|
|
|
|
|
2021-11-16 22:04:22 +01:00
|
|
|
#include <cstdint>
|
|
|
|
|
|
|
|
static inline float bellCurveApproximation(float x, float inverseWidth)
|
|
|
|
{
|
|
|
|
if (x < 0)
|
|
|
|
x = -x;
|
|
|
|
|
|
|
|
const auto nx = x * inverseWidth * 4;
|
|
|
|
if (nx > 2)
|
|
|
|
return 0.0f;
|
|
|
|
|
|
|
|
const auto x2 = nx * nx;
|
|
|
|
const auto x3 = x2 * nx;
|
|
|
|
const auto res = 1.0f + 0.27606958941084f * x3 - 0.80213917882168f * x2;
|
|
|
|
|
|
|
|
return res < 0.0f ? 0.0f : res;
|
|
|
|
}
|