cross3d
v1.1.1
Published
High-performance 3D cross product library for JavaScript/TypeScript (ESM, CJS, IIFE)
Maintainers
Readme
cross3d
A high-performance 3D cross product library for JavaScript/TypeScript, supporting ESM, CommonJS, and IIFE formats. Optimized for both regular arrays and Float64Array with zero memory allocation in critical paths.
Features
- Dual APIs:
cross(for regular arrays) andcross64(forFloat64Array). - Zero Allocation: Reuses output vectors to avoid garbage collection.
- Multi-Format Support: ESM, CommonJS, and IIFE (global variable:
crossproduct). - Type Safety: Strict TypeScript types (included in distribution).
Installation
via npm
npm install cross3dvia CDN (IIFE)
<script src="https://unpkg.com/cross3d@latest/dist/iife/cross3d.min.js"></script>
<!-- Exposes global variable: crossproduct -->Usage
1. ESM (ES Modules)
// Import both functions
import { cross, cross64 } from 'cross3d';
// Regular array usage
const outArray: [number, number, number] = [0, 0, 0];
cross(outArray, [1, 2, 3], [4, 5, 6]);
console.log(outArray); // [-3, 6, -3]
// Float64Array usage (high performance)
const out64 = new Float64Array(3);
cross64(out64, new Float64Array([1, 2, 3]), new Float64Array([4, 5, 6]));
console.log(Array.from(out64)); // [-3, 6, -3]2. CommonJS
const { cross, cross64 } = require('cross3d');
// Regular array example
const out = [0, 0, 0];
cross(out, [1, 0, 0], [0, 1, 0]);
console.log(out); // [0, 0, 1]3. IIFE (Global Variable)
<script src="https://unpkg.com/cross3d@latest/dist/iife/cross3d.min.js"></script>
<script>
// Use via global variable "cross3d"
const out = [0, 0, 0];
cross3d.cross(out, [3, 4, 5], [6, 7, 8]);
console.log(out); // [4*8 - 5*7, 5*6 - 3*8, 3*7 - 4*6] → [-3, 6, -3]
</script>API
cross(out, a, b)
Computes the cross product of two 3D arrays.
- Parameters:
out:[number, number, number]— Output array (will be overwritten, required).a:[number, number, number]— First input vector.b:[number, number, number]— Second input vector.
- Returns: The
outarray (same reference as input).
cross64(out, a, b)
Computes the cross product of two 3D Float64Array vectors (optimized for performance).
- Parameters:
out:Float64Array— Output buffer (length 3, will be overwritten, required).a:Float64Array— First input vector (length 3).b:Float64Array— Second input vector (length 3).
- Returns: The
outbuffer (same reference as input).
Module Formats
- ESM:
dist/esm/index.js(for modern bundlers like Webpack, Rollup). - CommonJS:
dist/cjs/index.js(for Node.js). - IIFE:
dist/iife/cross3d.js(global variable:crossproduct).
Minified version:dist/iife/cross3d.min.js.
Performance
- Operations per Second: ~180 million (for
cross64in Node.js 20+). - Memory Efficiency:
cross64uses 50% less memory than array-based approaches (24 bytes per vector vs. ~48 bytes). - GC Friendly: No temporary allocations when reusing
outvectors.
