greiner-hormann
Version:
Greiner-Hormann clipping algorithm
31 lines (26 loc) • 932 B
JavaScript
import boolean from './clip';
/**
* @param {Array.<Array.<Number>|Array.<Object>} polygonA
* @param {Array.<Array.<Number>|Array.<Object>} polygonB
* @return {Array.<Array.<Number>>|Array.<Array.<Object>|Null}
*/
export function union (polygonA, polygonB) {
return boolean(polygonA, polygonB, false, false);
}
/**
* @param {Array.<Array.<Number>|Array.<Object>} polygonA
* @param {Array.<Array.<Number>|Array.<Object>} polygonB
* @return {Array.<Array.<Number>>|Array.<Array.<Object>>|Null}
*/
export function intersection (polygonA, polygonB) {
return boolean(polygonA, polygonB, true, true);
}
/**
* @param {Array.<Array.<Number>|Array.<Object>} polygonA
* @param {Array.<Array.<Number>|Array.<Object>} polygonB
* @return {Array.<Array.<Number>>|Array.<Array.<Object>>|Null}
*/
export function diff (polygonA, polygonB) {
return boolean(polygonA, polygonB, false, true);
}
export const clip = boolean;