decomp实现拖拽将2d多边形分解示例代码

代码语言:html

所属分类:拖放

代码描述:decomp实现拖拽将2d多边形分解示例代码

代码标签: decomp 拖拽 2d 多边形 分解 示例 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html>
<head>
    <title>poly-decomp.js</title>
    <style>
        * {
            margin:0;
            padding:0;
            -webkit-touch-callout: none; /* iOS Safari */
            -webkit-user-select: none;   /* Chrome/Safari/Opera */
            -khtml-user-select: none;    /* Konqueror */
            -moz-user-select: none;      /* Firefox */
            -ms-user-select: none;       /* Internet Explorer/Edge */
            user-select: none;           /* Non-prefixed version, currently not supported by any browser */
        }
        body {
            margin: 0px;
            padding: 0px;
            overflow: hidden;
            font: 13px Helvetica, arial, freesans, clean, sans-serif;
        }
        p, h1 {
            margin-bottom: 5px;
        }
        h1 a {
            text-decoration: none;
        }
        a {
            color: black;
            text-decoration: underline;
        }
        #info {
            display: block;
            background-color:#eee;
            padding:10px;
        }
        canvas {
            width: 100%;
            height: 100%;
        }
    </style>
</head>
<body>
    <div id="info">
        <h1><a href="https://github.com/schteppe/poly-decomp.js">poly-decomp.js</a></h1>
        <p>Decomposition of 2D polygons into convex pieces in JavaScript. See the <a href="https://github.com/schteppe/poly-decomp.js">Github repo</a>.</p>
        <p>Try drawing a polygon below!</p>
    </div>

<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/decomp.min.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/dat.gui-min.js"></script>
    <script>
    var demoPolygons = [
        {
            "name": "BayazitCase1",
            "data": [
                [192,40],
                [32,48],
                [78,154],
                [118,108],
                [160,150]
            ]
        },
        {
            "name": "BayazitCase2",
            "data": [
                [125,52],
                [161,104],
                [202,52],
                [268,90],
                [260,188],
                [202,228],
                [165,188],
                [122,231],
                [64,192],
                [52,102]
            ]
        },
        {
            "name": "BayazitCase3",
            "data": [
                [160,56],
                [177,84],
                [196,61],
                [214,105],
                [316,56],
                [318,257],
                [219,255],
                [202,231],
                [184,253],
                [166,200],
                [53,252],
                [56,78]
            ]
        },
        {
            "name": "BayazitCase4",
            "data": [
                [186,56],
                [211,110],
                [230,55],
                [263,53],
                [275,84],
                [323,98],
                [319,246],
                [275,245],
                [240,213],
                [202,243],
                [169,218],
                [119,248],
                [54,246],
                [53,81]
            ]
        },
        {
            "name": "BayazitCase5",
            "data": [
                [174,160],
                [131,112],
                [201,270],
                [128,240],
                [52,270],
                [100,52]
            ]
        },
        {
            "name": "Simple",
            "data": [
                [100,180],
                [100,80],
                [300,80],
                [300,180],
                [250,130]
            ]
        },
        {
            "name": "Peaks",
            "data": [
                [50,220.55491449129886],
                [60,200.9165010426762],
                [70,171.70035249020682],
                [80,114.90970199382247],
                [90,165.9804978067106],
                [100,160.4772842673997],
                [110,84.41974678190957],
                [120,293.8773909405506],
                [130,63.92280957183573],
                [140,73.75740089300058],
                [150,61.19584194167069],
                [160,159.87092544067778],
                [170,247.10194630714335],
                [180,183.8388841500984],
                [190,117.18720369155437],
                [200,242.94006022134025],
                [210,206.9854959619504],
                [220,65.33570549558465],
                [230,263.57031109249294],
                [240,136.10471065015298],
                [250,300],
                [50,300]
            ]
        },
        {
            "name": "Bayazit1",
            "data": [
                [154,124],
                [201,475],
                [351,359],
                [274,505],
                [568,485],
                [481,342],
                [611,453],
                [571,130],
                [463,240],
                [557,86],
                [227,98],
                [321,265]
            ]
        },
        {
            "name": "Bayazit3",
            "data": [
                [339,279],
                [344,142],
                [419,316],
                [599,112],
                [532,351],
                [778,290],
                [564,422],
                [728,615],
                [449,513],
                [519,720],
                [404,594],
                [327,717],
                [350,495],
                [76,580],
                [305,436],
                [98,338],
                [320,370],
                [212,217]
            ]
        },
        {
            "name": "Bayazit4",
            "data": [
                [201,291],
                [304,477],
                [420,274],
                [494,464],
                [617,259],
                [758,458],
                [635,66],
                [513,324],
                [410,97],
                [320,327],
                [180,119],
                [83,369]
            ]
        }
    ];

    var path = [],
        polys = [],
        reflexVertices = [],
        steinerPoints = [],
        mousedown = false,
        colors = ["#f99","#9f9","#99f","#ff9"];

    var canvas = document.createElement('canvas');
    var pixelRatio = (window.devicePixelRatio||1);
    canvas.width = window.innerWidth * pixelRatio;
    canvas.height = window.innerHeight * pixelRatio;
    document.body.append(canvas);

    function render() {
        var c = canvas.getContext('2d');

        // clear
        c.clearRect(0, 0, canvas.width, canvas.height);

        c.fillStyle = "red";
        c.strokeStyle = "black";

        if(mousedown){
            c.beginPath();
      .........完整代码请登录后点击上方下载按钮下载查看

网友评论0