UNPKG

@thi.ng/vectors

Version:

Optimized 2d/3d/4d and arbitrary length vector operations, support for memory mapping/layouts

14 lines (13 loc) 374 B
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 };