# split-polygon

Splits a convex polygon by a plane

## Stats

StarsIssuesVersionUpdatedCreatedSize
split-polygon
1621.0.010 years ago11 years ago

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

``````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

``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:
``````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