javascript earcut

2022/1/6 9:03:42

本文主要是介绍javascript earcut,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 

 

THREE.Earcut = {

    triangulate: function ( data, holeIndices, dim ) {

        dim = dim || 2;

        const hasHoles = holeIndices && holeIndices.length;
        const outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;
        let outerNode = linkedList( data, 0, outerLen, dim, true );
        const triangles = [];

        if ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;

        let minX, minY, maxX, maxY, x, y, invSize;

        if ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );

        // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox
        if ( data.length > 80 * dim ) {

            minX = maxX = data[ 0 ];
            minY = maxY = data[ 1 ];

            for ( let i = dim; i < outerLen; i += dim ) {

                x = data[ i ];
                y = data[ i + 1 ];
                if ( x < minX ) minX = x;
                if ( y < minY ) minY = y;
                if ( x > maxX ) maxX = x;
                if ( y > maxY ) maxY = y;

            }

            // minX, minY and invSize are later used to transform coords into integers for z-order calculation
            invSize = Math.max( maxX - minX, maxY - minY );
            invSize = invSize !== 0 ? 1 / invSize : 0;

        }

        earcutLinked( outerNode, triangles, dim, minX, minY, invSize );

        return triangles;

    }

};

 

 

 

var triangles = THREE.Earcut.triangulate([10,0, 0,50, 60,60, 70,10]);

 

 

参考:https://github.com/mapbox/earcut

#######################################



这篇关于javascript earcut的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程