Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mikolalysenko/split-polygon
Splits a convex polygon by a plane
https://github.com/mikolalysenko/split-polygon
Last synced: about 2 months ago
JSON representation
Splits a convex polygon by a plane
- Host: GitHub
- URL: https://github.com/mikolalysenko/split-polygon
- Owner: mikolalysenko
- License: mit
- Created: 2013-10-10T04:54:12.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2014-06-19T15:20:20.000Z (over 10 years ago)
- Last Synced: 2024-10-20T14:27:40.045Z (2 months ago)
- Language: JavaScript
- Homepage:
- Size: 141 KB
- Stars: 16
- Watchers: 4
- Forks: 4
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
split-polygon
=============
Splits a *convex* polygon by a plane into two parts (or optionally clips the polygon against a single plane) using the Sutherland-Hodgman algorithm. Works in arbitrary dimensions, both in the server and the browser## Install
npm install split-polygon
## Example
```javascript
var splitPolygon = require("split-polygon")var poly = [[1,2], [3,4], [0,0]]
var parts = splitPolygon(poly, [0, 1, 3])
console.log(parts.positive)
console.log(parts.negative)
```## API
```javascript
var splitPolygon = require("split-polygon")
```### `splitPolygon(poly, plane)`
Splits the *convex* polygon `poly` against plane into two parts, one above the plane and the other below it. The equation for the plane is determined by:```javascript
function planeDistance(x) {
return plane[0] * x[0] + plane[1] * x[1] + ... + plane[n-1] * x[n-1] + plane[n]
}
```Points above the plane are those where `planeDistance(x) >= 0` and below are those with `planeDistance(x) <= 0`
* `poly` is a *convex* polygon
* `plane` is the plane**Returns** An object with two properties:
* `positive` is the portion of the polygon above the plane
* `negative` is the portion of the polygon below the plane### `splitPolygon.positive(poly, plane)`
Same result as splitPolygon, except only returns the positive part. This saves a bit of memory if you only need one side.### `splitPolygon.negative(poly, plane)`
Ditto, except returns only the negative part.## Credits
(c) 2013 Mikola Lysenko. MIT License