Mesh-Mesh and Triangle-Triangle Intersection tests based on the algorithm by Tomas Akenine-Möller.[1]
Built with 🦀 Rust and 🕸 WebAssembly.
Mesh-Mesh and Triangle-Triangle Intersection tests.
/**
* Triangle/triangle intersection test
* @returns true if the triangles intersect, otherwise false
*/
const noDivTriTriIsect = (
v0: [number, number, number],
v1: [number, number, number],
v2: [number, number, number],
u0: [number, number, number],
u1: [number, number, number],
u2: [number, number, number],
// not used by default
epsilon?: number
): boolean => {...}
/**
* Mesh/mesh intersection test
* @returns true if the meshes intersect, otherwise false
*/
const meshMeshIsect => (
// m1.length should be divisible by 9
m1: ArrayLike<number>,
// m2.length should be divisible by 9
m2: ArrayLike<number>,
// defaults to 0.000001
epsilon?: number
): boolean => {...}
You will need a package manager, either npm (comes with node) or yarn.
You will also need a bundler, webpack or Rollup, configured for your project.
Then, in a terminal:
npm install intersection-wasm
# Or, yarn add intersection-wasm
Afterwards, import and use as follows:
import * as intersection from 'intersection-wasm';
intersection.noDivTriTriIsect(
[0.848311, 0.71034, 0.799546],
[0.921121, 0.519029, 0.950985],
[0, 1.751, 0],
[-0.5, 0.8755, 0.5],
[0.5, 0.8755, 1.5],
[0.5, 0.8755, 0.5]
); // ← false
intersection.meshMeshIsect(
new Float32Array([
-140.98574829101562,
-173.12110900878906,
-0.9740447998046875,
-140.98574829101562,
-174.72113037109375,
-0.9740447998046875,
-140.68576049804688,
-174.72113037109375,
-0.9740447998046875
]),
new Float32Array([
-140.98574829101562,
-174.72113037109375,
-0.9740447998046875,
-140.98574829101562,
-174.72113037109375,
-0.9740447998046875,
-140.98574829101562,
-174.72113037109375,
-1.137430191040039,
-140.68576049804688,
-174.72113037109375,
-1.137430191040039,
-140.98574829101562,
-174.72113037109375,
-0.9740447998046875,
-140.68576049804688,
-174.72113037109375,
-1.137430191040039
]),
0.0001
); // ← true
wasm-pack build
cargo build
cd demo && npm i && npm start
cargo test
wasm-pack publish
1. Möller, T. (1997). A fast triangle-triangle intersection test. Journal of graphics tools, 2(2), 25-30.