ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript earcut

2022-01-06 08:34:06  阅读:180  来源: 互联网

标签:dim javascript earcut minX minY outerNode invSize data


 

 

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

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

标签:dim,javascript,earcut,minX,minY,outerNode,invSize,data
来源: https://www.cnblogs.com/herd/p/15769559.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有