{"id":20507307,"url":"https://github.com/catenda/intersection-wasm","last_synced_at":"2025-04-13T21:52:44.757Z","repository":{"id":35064692,"uuid":"201479500","full_name":"catenda/intersection-wasm","owner":"catenda","description":"Mesh-Mesh and Triangle-Triangle Intersection tests based on the algorithm by Tomas Akenine-Möller","archived":false,"fork":false,"pushed_at":"2023-01-06T02:04:58.000Z","size":1232,"stargazers_count":18,"open_issues_count":19,"forks_count":2,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-04-24T23:21:19.438Z","etag":null,"topics":["3d","algorithm","collision","collision-detection","intersect","intersection","mesh","mesh-processing","meshes","npm","npm-module","npm-package","rust","rust-library","triangle","triangle-intersection-tests","triangles","wasm","webassembly"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/catenda.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-08-09T14:07:55.000Z","updated_at":"2023-08-30T09:30:30.000Z","dependencies_parsed_at":"2023-01-15T13:04:25.352Z","dependency_job_id":null,"html_url":"https://github.com/catenda/intersection-wasm","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catenda%2Fintersection-wasm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catenda%2Fintersection-wasm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catenda%2Fintersection-wasm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catenda%2Fintersection-wasm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/catenda","download_url":"https://codeload.github.com/catenda/intersection-wasm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248788867,"owners_count":21161726,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d","algorithm","collision","collision-detection","intersect","intersection","mesh","mesh-processing","meshes","npm","npm-module","npm-package","rust","rust-library","triangle","triangle-intersection-tests","triangles","wasm","webassembly"],"created_at":"2024-11-15T20:13:21.477Z","updated_at":"2025-04-13T21:52:44.734Z","avatar_url":"https://github.com/catenda.png","language":"Rust","readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003e\n    \u003ccode\u003eintersection-wasm\u003c/code\u003e\n  \u003c/h1\u003e\n  \u003cstrong\u003eMesh-Mesh and Triangle-Triangle Intersection tests based on the algorithm by Tomas Akenine-Möller.\u003c/strong\u003e\u003csup\u003e\u003ca href=\"#article\"\u003e[1]\u003c/a\u003e\u003c/sup\u003e\n  \n  \u003csub\u003eBuilt with 🦀 \u003ca href=\"https://www.rust-lang.org\" target=\"_blank\"\u003eRust\u003c/a\u003e and 🕸 \u003ca href=\"https://webassembly.org\" target=\"_blank\"\u003eWebAssembly\u003c/a\u003e.\u003c/sub\u003e\n\n[![Build Status](https://travis-ci.org/catenda/intersection-wasm.svg?branch=master)](https://travis-ci.org/catenda/intersection-wasm) [![GitHub version](https://badge.fury.io/gh/catenda%2Fintersection-wasm.svg)](https://github.com/catenda/intersection-wasm) [![npm version](https://badge.fury.io/js/intersection-wasm.svg)](https://www.npmjs.com/package/intersection-wasm) [![license](https://img.shields.io/github/license/catenda/intersection-wasm)](https://github.com/catenda/intersection-wasm)\n\u003c/div\u003e\n\n## About\n\nMesh-Mesh and Triangle-Triangle Intersection tests.\n\n```typescript\n/**\n* Triangle/triangle intersection test\n* @returns true if the triangles intersect, otherwise false\n*/\nconst noDivTriTriIsect = (\n  v0: [number, number, number],\n  v1: [number, number, number],\n  v2: [number, number, number],\n\n  u0: [number, number, number],\n  u1: [number, number, number],\n  u2: [number, number, number],\n\n  // not used by default\n  epsilon?: number\n): boolean =\u003e {...}\n\n/**\n* Mesh/mesh intersection test\n* @returns true if the meshes intersect, otherwise false\n*/\nconst meshMeshIsect =\u003e (\n  // m1.length should be divisible by 9\n  m1: ArrayLike\u003cnumber\u003e,\n  // m2.length should be divisible by 9\n  m2: ArrayLike\u003cnumber\u003e,\n  // defaults to 0.000001\n  epsilon?: number\n): boolean =\u003e {...}\n```\n\n## 🚴 Usage\n\n### Installation\n\nYou will need a package manager, either npm ([comes with node](https://nodejs.org/en/download)) or [yarn](https://yarnpkg.com/lang/en/docs/install).\n\nYou will also need a bundler, [webpack](https://webpack.js.org) or [Rollup](https://rollupjs.org/guide/en), configured for your project.\n\nThen, in a terminal:\n\n```shell\nnpm install intersection-wasm\n# Or, yarn add intersection-wasm\n```\n\nAfterwards, import and use as follows:\n\n```js\nimport * as intersection from 'intersection-wasm';\n\nintersection.noDivTriTriIsect(\n  [0.848311, 0.71034, 0.799546],\n  [0.921121, 0.519029, 0.950985],\n  [0, 1.751, 0],\n\n  [-0.5, 0.8755, 0.5],\n  [0.5, 0.8755, 1.5],\n  [0.5, 0.8755, 0.5]\n); // ← false\n\nintersection.meshMeshIsect(\n  new Float32Array([\n    -140.98574829101562,\n    -173.12110900878906,\n    -0.9740447998046875,\n    -140.98574829101562,\n    -174.72113037109375,\n    -0.9740447998046875,\n    -140.68576049804688,\n    -174.72113037109375,\n    -0.9740447998046875\n  ]),\n  new Float32Array([\n    -140.98574829101562,\n    -174.72113037109375,\n    -0.9740447998046875,\n    -140.98574829101562,\n    -174.72113037109375,\n    -0.9740447998046875,\n    -140.98574829101562,\n    -174.72113037109375,\n    -1.137430191040039,\n    -140.68576049804688,\n    -174.72113037109375,\n    -1.137430191040039,\n    -140.98574829101562,\n    -174.72113037109375,\n    -0.9740447998046875,\n    -140.68576049804688,\n    -174.72113037109375,\n    -1.137430191040039\n  ]),\n  0.0001\n); // ← true\n```\n\n## ⚙ Development\n\n### 🛠️ Build WASM\n\n```\nwasm-pack build\n```\n\n### 🛠️ Build natively\n\n```\ncargo build\n```\n\n### 🔬 Run tests in the browser\n\n```\ncd demo \u0026\u0026 npm i \u0026\u0026 npm start\n```\n\n### 🔬 Test natively\n\n```\ncargo test\n```\n\n### 🎁 Publish to NPM\n\n```\nwasm-pack publish\n```\n\n\u003cdiv id=\"article\"\u003e1. Möller, T. (1997). A fast triangle-triangle intersection test. \u003ci\u003eJournal of graphics tools\u003c/i\u003e, \u003ci\u003e2\u003c/i\u003e(2), 25-30.\u003c/div\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatenda%2Fintersection-wasm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcatenda%2Fintersection-wasm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatenda%2Fintersection-wasm/lists"}