UNPKG

@thi.ng/matrices

Version:

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

40 lines (39 loc) 660 B
import { ZERO3 } from "@thi.ng/vectors/api"; import { setC } from "@thi.ng/vectors/setc"; const quatToMat44 = (out, a, t = ZERO3) => { const [x, y, z, w] = a; const x2 = x + x; const y2 = y + y; const z2 = z + z; const xx = x * x2; const xy = x * y2; const xz = x * z2; const yy = y * y2; const yz = y * z2; const zz = z * z2; const wx = w * x2; const wy = w * y2; const wz = w * z2; return setC( out || [], 1 - yy - zz, xy + wz, xz - wy, 0, xy - wz, 1 - xx - zz, yz + wx, 0, xz + wy, yz - wx, 1 - xx - yy, 0, t[0], t[1], t[2], 1 ); }; export { quatToMat44 };