UNPKG

@thi.ng/matrices

Version:

Matrix & quaternion operations for 2D/3D geometry processing

43 lines (42 loc) 764 B
import { DEG2RAD } from "@thi.ng/math/api"; import { setC } from "@thi.ng/vectors/setc"; const frustum = (out, left, right, bottom, top, near, far) => { const dx = 1 / (right - left); const dy = 1 / (top - bottom); const dz = 1 / (far - near); return setC( out || [], near * 2 * dx, 0, 0, 0, 0, near * 2 * dy, 0, 0, (right + left) * dx, (top + bottom) * dy, -(far + near) * dz, -1, 0, 0, -(far * near * 2) * dz, 0 ); }; const frustumBounds = (fovy, aspect, near, far) => { const top = near * Math.tan(fovy * DEG2RAD / 2); const right = top * aspect; return { left: -right, right, bottom: -top, top, near, far }; }; export { frustum, frustumBounds };