src/Tools/babylon.earcut.js
/**
     * return a percentage difference between the polygon area and its triangulation area;
     * used to verify correctness of triangulation
     */
return a percentage difference between the polygon area and its triangulation area;
used to verify correctness of triangulation
return a percentage difference between the polygon area and its triangulation area ; used to verify correctness of triangulation
function deviation(data, holeIndices, dim, triangles) {
        var hasHoles = holeIndices && holeIndices.length;
        var outerLen = hasHoles ? holeIndices[0] * dim : data.length;
        var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));
        if (hasHoles) {
            for (var i = 0, len = holeIndices.length; i < len; i++) {
                var start = holeIndices[i] * dim;
                var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;
                polygonArea -= Math.abs(signedArea(data, start, end, dim));
            }
        }
        var trianglesArea = 0;
        for (i = 0; i < triangles.length; i += 3) {
            var a = triangles[i] * dim;
            var b = triangles[i + 1] * dim;
            var c = triangles[i + 2] * dim;
            trianglesArea += Math.abs((data[a] - data[c]) * (data[b + 1] - data[a + 1]) -
                (data[a] - data[b]) * (data[c + 1] - data[a + 1]));
        }
        return polygonArea === 0 && trianglesArea === 0 ? 0 : Math.abs((trianglesArea - polygonArea) / polygonArea);
    }
function deviation ( data , holeIndices , dim , triangles ) { var hasHoles = holeIndices && holeIndices . length ; var outerLen = hasHoles ? holeIndices [ 0 ] * dim : data . length ; var polygonArea = Math . abs ( signedArea ( data , 0 , outerLen , dim ) ) ; if ( hasHoles ) { for ( var i = 0 , len = holeIndices . length ; i < len ; i ++ ) { var start = holeIndices [ i ] * dim ; var end = i < len - 1 ? holeIndices [ i + 1 ] * dim : data . length ; polygonArea -= Math . abs ( signedArea ( data , start , end , dim ) ) ; } } var trianglesArea = 0 ; for ( i = 0 ; i < triangles . length ; i += 3 ) { var a = triangles [ i ] * dim ; var b = triangles [ i + 1 ] * dim ; var c = triangles [ i + 2 ] * dim ; trianglesArea += Math . abs ( ( data [ a ] - data [ c ] ) * ( data [ b + 1 ] - data [ a + 1 ] ) - ( data [ a ] - data [ b ] ) * ( data [ c + 1 ] - data [ a + 1 ] ) ) ; } return polygonArea === 0 && trianglesArea === 0 ? 0 : Math . abs ( ( trianglesArea - polygonArea ) / polygonArea ) ; }
return a percentage difference between the polygon area and its triangulation area;
 used to verify correctness of triangulation
return a percentage difference between the polygon area and its triangulation area ; used to verify correctness of triangulation