isccw
Version:
validator if polygon is CCW or not
183 lines (153 loc) • 7.55 kB
JavaScript
var assert = require('assert');
var {isccw, isccwPolygon} = require('./')
//CCW
var geometry1 = [
[],
[],
[],
[],
[]
]
// CC
var geometry2 = [
[],
[],
[],
[],
[]
]
// CCW
var geometry3 = [
[],
[],
[],
[],
[],
[],
[],
[],
[]
]
// CCW concave
var geometry4 = [
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[]
]
describe('isccw', function() {
it('Geometry 1 should be CCW', function() {
assert.equal(true, isccw(geometry1));
});
it('Geometry 2 should be CC', function() {
assert.equal(false, isccw(geometry2));
});
it('Geometry 3 should be CCW', function() {
assert.equal(true, isccw(geometry3));
});
it('Geometry 4 should be CCW', function() {
assert.equal(true, isccw(geometry4));
});
var reverseGeometry1 = geometry1.concat()
reverseGeometry1.reverse()
it('Reverse Geometry 1 should be CC', function() {
assert.equal(false, isccw(reverseGeometry1));
});
var reverseGeometry2 = geometry2.concat()
reverseGeometry2.reverse()
it('Reverse Geometry 2 should be CCW', function() {
assert.equal(true, isccw(reverseGeometry2));
});
var reverseGeometry3 = geometry3.concat()
reverseGeometry3.reverse()
it('Reverse Geometry 3 should be CC', function() {
assert.equal(false, isccw(reverseGeometry3));
});
var reverseGeometry4 = geometry4.concat()
reverseGeometry4.reverse()
it('Reverse Geometry 4 should be CC', function() {
assert.equal(false, isccw(reverseGeometry4));
});
});
//CCW
var geometry1OpenPolygon = [
[],
[],
[],
[],
[]
]
// CC
var geometry2OpenPolygon = [
[],
[],
[],
[]
]
// CCW
var geometry3OpenPolygon = [
[],
[],
[],
[],
[],
[],
[],
[]
]
// CCW concave
var geometry4OpenPolygon = [
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[]
]
describe('isccwPolygon', function() {
it('Geometry 1 should be CCW', function() {
assert.equal(true, isccwPolygon(geometry1OpenPolygon, true));
});
it('Geometry 2 should be CC', function() {
assert.equal(false, isccwPolygon(geometry2OpenPolygon,true));
});
it('Geometry 3 should be CCW', function() {
assert.equal(true, isccwPolygon(geometry3OpenPolygon,true));
});
it('Geometry 4 should be CCW', function() {
assert.equal(true, isccwPolygon(geometry4OpenPolygon,true));
});
var reverseGeometry1 = geometry1OpenPolygon.concat()
reverseGeometry1.reverse()
it('Reverse Geometry 1 should be CC', function() {
assert.equal(false, isccwPolygon(reverseGeometry1,true));
});
var reverseGeometry2 = geometry2OpenPolygon.concat()
reverseGeometry2.reverse()
it('Reverse Geometry 2 should be CCW', function() {
assert.equal(true, isccwPolygon(reverseGeometry2,true));
});
var reverseGeometry3 = geometry3OpenPolygon.concat()
reverseGeometry3.reverse()
it('Reverse Geometry 3 should be CC', function() {
assert.equal(false, isccwPolygon(reverseGeometry3,true));
});
var reverseGeometry4 = geometry4OpenPolygon.concat()
reverseGeometry4.reverse()
it('Reverse Geometry 4 should be CC', function() {
assert.equal(false, isccwPolygon(reverseGeometry4,true));
});
});