UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

31 lines (24 loc) 859 B
import { assert } from "../assert.js"; const q = 0.7172491568; const p0 = 0.6312725339; const ps0 = 0.4308049446; const p1 = 0.3500347951; const ps1 = 0.4678202347; const p2 = -0.06207747907; const ps2 = 0.04253832927; // const lamb4 = (lamb * lamb) * (lamb * lamb); const lamb4 = 0.559840650625; /** * Bessel first order function of zeroth order * @see https://link.springer.com/article/10.1007/s40314-020-01238-z * @see https://www.shadertoy.com/view/Wt3czM * @param {number} x * @return {number} */ export function bessel_j0(x) { assert.notNaN(x, 'x'); const xx = x * x; const t0 = Math.sqrt(1.0 + lamb4 * xx); const t1 = Math.sqrt(t0); return xx === 0.0 ? 1.0 : 1.0 / (t1 * (1.0 + q * xx)) * ((p0 + p1 * xx + p2 * t0) * Math.cos(x) + ((ps0 + ps1 * xx) * t0 + ps2 * xx) * (Math.sin(x) / x)); }