Comparing version
{ | ||
"name": "earcut", | ||
"version": "2.0.4", | ||
"version": "2.0.5", | ||
"description": "The fastest and smallest JavaScript polygon triangulation library for your WebGL apps", | ||
@@ -5,0 +5,0 @@ "main": "src/earcut.js", |
@@ -104,2 +104,6 @@ ## Earcut | ||
##### 2.0.5 (Oct 12, 2015) | ||
- Fixed a z-curve hashing bug that could lead to unexpected results in very rare cases involving shapes with lots of points. | ||
##### 2.0.4 (Oct 8, 2015) | ||
@@ -106,0 +110,0 @@ |
@@ -75,12 +75,4 @@ 'use strict'; | ||
if (!node.steiner && (equals(data, node.i, node.next.i) || orient(data, node.prev.i, node.i, node.next.i) === 0)) { | ||
// remove node | ||
node.prev.next = node.next; | ||
node.next.prev = node.prev; | ||
if (node.prevZ) node.prevZ.nextZ = node.nextZ; | ||
if (node.nextZ) node.nextZ.prevZ = node.prevZ; | ||
removeNode(node); | ||
node = end = node.prev; | ||
if (node === node.next) return null; | ||
@@ -118,9 +110,4 @@ again = true; | ||
// remove ear node | ||
next.prev = prev; | ||
prev.next = next; | ||
removeNode(ear); | ||
if (ear.prevZ) ear.prevZ.nextZ = ear.nextZ; | ||
if (ear.nextZ) ear.nextZ.prevZ = ear.prevZ; | ||
// skipping the next vertice leads to less sliver triangles | ||
@@ -280,11 +267,5 @@ ear = next.next; | ||
// remove two nodes involved | ||
a.next = b; | ||
b.prev = a; | ||
removeNode(node); | ||
removeNode(node.next); | ||
var az = node.prevZ, | ||
bz = node.nextZ && node.nextZ.nextZ; | ||
if (az) az.nextZ = bz; | ||
if (bz) bz.prevZ = az; | ||
node = start = b; | ||
@@ -516,4 +497,6 @@ } | ||
function zOrder(x, y, minX, minY, size) { | ||
// coords are transformed into (0..1000) integer range | ||
x = 1000 * (x - minX) / size; | ||
// coords are transformed into non-negative 15-bit integer range | ||
x = 32767 * (x - minX) / size; | ||
y = 32767 * (y - minY) / size; | ||
x = (x | (x << 8)) & 0x00FF00FF; | ||
@@ -524,3 +507,2 @@ x = (x | (x << 4)) & 0x0F0F0F0F; | ||
y = 1000 * (y - minY) / size; | ||
y = (y | (y << 8)) & 0x00FF00FF; | ||
@@ -654,2 +636,10 @@ y = (y | (y << 4)) & 0x0F0F0F0F; | ||
function removeNode(node) { | ||
node.next.prev = node.prev; | ||
node.prev.next = node.next; | ||
if (node.prevZ) node.prevZ.nextZ = node.nextZ; | ||
if (node.nextZ) node.nextZ.prevZ = node.prevZ; | ||
} | ||
function Node(i) { | ||
@@ -656,0 +646,0 @@ // vertex coordinates |
@@ -15,4 +15,4 @@ 'use strict'; | ||
areaTest('water4', 705); | ||
areaTest('water-huge', 5162, 0.0015); | ||
areaTest('water-huge2', 4457, 0.0019); | ||
areaTest('water-huge', 5164, 0.0015); | ||
areaTest('water-huge2', 4462, 0.0019); | ||
areaTest('degenerate', 0); | ||
@@ -19,0 +19,0 @@ areaTest('bad-hole', 34, 0.0420); |
173
2.37%344826
-0.04%2474
-0.24%