@thi.ng/vectors
Version:
Optimized 2d/3d/4d and arbitrary length vector operations, support for memory mapping/layouts
14 lines (13 loc) • 374 B
JavaScript
import { dot } from "./dot.js";
import { maddN } from "./maddn.js";
import { mulN } from "./muln.js";
import { zero } from "./setn.js";
const refract = (out, a, n, eta) => {
!out && (out = a);
const d = dot(a, n);
const k = 1 - eta * eta * (1 - d * d);
return k < 0 ? zero(out) : maddN(out, n, -(eta * d + Math.sqrt(k)), mulN(out, a, eta));
};
export {
refract
};