避免技术雷达点重叠



我正在创建我自己的技术雷达,为此我从https://github.com/trecenti/tech-radar下载了代码

我已经根据我的需要定制了。在此,我修改了"tech-radar.min.js"文件,使其符合我的要求。

现在,有一件事我仍然无法修改,那就是圆上点的重叠。根据我的研究,点的位置是根据点的标题和机会整数函数。

我想以某种方式修改,使点不会重叠。

我的索引文件代码是:

<body>
  <div id="radar">
  </div>
  <div id="ref-table"></div>
</body>
<script>
  var adopt = new tr.models.Cycle('Adopt', 0);
  var trial = new tr.models.Cycle('Trial', 1);
  var assess = new tr.models.Cycle('Assess', 2);
  var hold = new tr.models.Cycle('Hold', 3);
  var radar = new tr.models.Radar();
  var toolsQuadrant = new tr.models.Quadrant('Tools');
  var techniquesQuadrant = new tr.models.Quadrant('Techniques');
  var platformsQuadrant = new tr.models.Quadrant('Platforms');
  var languageFramework = new tr.models.Quadrant('Languages & Frameworks');
  toolsQuadrant.add([
      new tr.models.Blip('D3', adopt),
      new tr.models.Blip('Dependency Management for JavaScript', adopt, true),
      new tr.models.Blip('Ansible', trial, true),
      new tr.models.Blip('Calabash', trial, true),
      new tr.models.Blip('Chaos Monkey', trial, true),
      new tr.models.Blip('Gatling', trial),
      new tr.models.Blip('Grunt.js', trial, true),
      new tr.models.Blip('Hystrix', trial),
      new tr.models.Blip('Icon fonts', trial),
      new tr.models.Blip('Librarian-puppet and Librarian-Chef', trial),
      new tr.models.Blip('Logstash & Graylog2', trial),
      new tr.models.Blip('Moco', trial, true),
      new tr.models.Blip('PhantomJS', trial),
      new tr.models.Blip('Prototype On Paper', trial, true),
      new tr.models.Blip('SnapCI', trial, true),
      new tr.models.Blip('Snowplow Analytics & Piwik', trial),
      new tr.models.Blip('Cloud-init', assess, true),
      new tr.models.Blip('Docker', assess, true),
      new tr.models.Blip('Octopus', assess),
      new tr.models.Blip('Sensu', assess, true),
      new tr.models.Blip('Travis for OSX/iOS', assess, true),
      new tr.models.Blip('Visual regression testing tools', assess, true),
      new tr.models.Blip('Xamarin', assess, true),
      new tr.models.Blip('Ant', hold, true),
      new tr.models.Blip('Heavyweight test tools', hold),
      new tr.models.Blip('TFS', hold)
  ]);
  techniquesQuadrant.add([
      new tr.models.Blip('Capturing client-side JavaScript errors', adopt),
      new tr.models.Blip('Continuous delivery for mobile devices', adopt),
      new tr.models.Blip('Mobile testing on mobile networks', adopt),
      new tr.models.Blip('Segregated DOM plus node for JS Testing', adopt, true),
      new tr.models.Blip('Windows infrastructure automation', adopt),
      new tr.models.Blip('Capture domain events explicitily', trial, true),
      new tr.models.Blip('Client and server rendering with same code', trial, true),
      new tr.models.Blip('HTML5 storage instead of cookies', trial),
      new tr.models.Blip('Instrument all the things', trial, true),
      new tr.models.Blip('Masterless Chef/Puppet', trial, true),
      new tr.models.Blip('Micro-services', trial),
      new tr.models.Blip('Perimeterless enterprise', trial),
      new tr.models.Blip('Provisioning testing', trial, true),
      new tr.models.Blip('Structured logging', trial, true),
      new tr.models.Blip('Bridging physical and digital worlds with simple hardware', assess, true),
      new tr.models.Blip('Collaborative analytics and data science', assess),
      new tr.models.Blip('Datensparsamkeit', assess, true),
      new tr.models.Blip('Development environments in the cloud', assess),
      new tr.models.Blip('Focus on mean time to recovery', assess),
      new tr.models.Blip('Machine image as a build artifact', assess),
      new tr.models.Blip('Tangible interaction', assess, true),
      new tr.models.Blip('Cloud lift and shift', hold, true),
      new tr.models.Blip('Ignoring OWASP Top 10', hold, true),
      new tr.models.Blip('Siloed metrics', hold, true),
      new tr.models.Blip('Velocity as productivity', hold, true)
  ]);
  platformsQuadrant.add([
      new tr.models.Blip('Elastic Search', adopt),
  ]);
  languageFramework.add([
      new tr.models.Blip('Clojure', adopt, true),
  ]);
  radar.setFirstQuadrant(toolsQuadrant);
  radar.setSecondQuadrant(techniquesQuadrant);
  radar.setThirdQuadrant(platformsQuadrant);
  radar.setFourthQuadrant(languageFramework);
  var radarGraph = new tr.graphing.Radar(1080, radar);
  radarGraph.init('#radar').plot();
  var refTable = new tr.graphing.RefTable(radar);
  refTable.init('#ref-table').render();
</script>

和tech-radar.min.js文件是:

var tr = tr || {};
tr.models = {}, tr.graphing = {}, tr.util = {}, tr.graphing.Radar = function(t, n) {
    function r() {
        return Math.round(t / 2)
    }
    function e() {
        p.append("line").attr("x1", r()).attr("y1", 0).attr("x2", r()).attr("y2", t).attr("stroke-width", 14), p.append("line").attr("x1", 0).attr("y1", r()).attr("x2", t).attr("y2", r()).attr("stroke-width", 14)
    }
    function a(t, n) {
        var e = (l.sequence(t.length), l.sum(t.length)),
            a = l.sum(n);
        return r() - r() * a / e
    }

    function u(t) {
        t.forEach(function(n, e) {
            p.append("circle").attr("cx", r()).attr("cy", r()).attr("r", a(t, e))
        })
    }
    function c(t) {
        var n;
        n = Math.round(r() / t.length), t.forEach(function(n, e) {
            p.append("text").attr("class", "line-text").attr("stroke", "#000000").attr("stroke-width", "0.3").attr("y", r() + 4).attr("x", r() - a(t, e) + 10).text(n.name()), p.append("text").attr("class", "line-text").attr("stroke", "#000000").attr("stroke-width", "0.3").attr("y", r() + 4).attr("x", r() + a(t, e) - 10).attr("text-anchor", "end").text(n.name())
        })
    }
    function o(t, n, r, e) {
        var a, u, c, o, i, s;
        return a = 13, u = n - a, c = t - a + 1, o = t + a + 1, i = n + a - a / 2.5, s = t + 1 + "," + u + " " + c + "," + i + " " + o + "," + i, (e || p).append("polygon").attr("points", s).attr("class", r).attr("stroke-width", 1.5)
    }
    function i(t, n, r, e) {
        return (e || p).append("circle").attr("cx", t).attr("cy", n).attr("class", r).attr("stroke-width", 1.5).attr("r", 10)
    }
    function s(t, n, e, u, c) {
        var s;
        s = n.blips(), t.forEach(function(n, f) {
            var d, l, I;
            d = a(t, f), l = f == t.length - 1 ? 0 : a(t, f + 1);
            var I = s.filter(function(t) {
                return t.cycle() == n
            });
            I.forEach(function(t) {
                var a, s, f = t.name().split(""),
                    I = f.reduce(function(t, n) {
                        return t + n.charCodeAt(0)
                    }, 0);
                     /*var randomNumber = chance.integer({
                    min: 7,
                    max: 42
                });
                    var evenNumber = randomNumber * 2;
                    console.log(evenNumber);*/
                chance = new Chance(I * n.name().length * t.number()), a = Math.PI * chance.integer({
                    min: 13,
                    max: 85
                }) / 180, s = chance.floating({
                    min: l + 25,
                    max: d - 10
                });
                var m = r() + s * Math.cos(a) * e,
                    y = r() + s * Math.sin(a) * u,
                    v = p.append("g").attr("class", "blip-group").attr("id","diagram"+t.number()).attr("onmouseover", "mouseoverfunction("+t.number()+")").attr("onmouseout", "mouseoutfunction("+t.number()+")");
                t.isNew() ? o(m, y, c, v) : i(m, y, c, v), h.push(function() {
                   /* var n;
                    n = p.append("div").attr("x", m + 15).attr("y", y + 4).attr("class", "blip-name").attr("text-anchor", "left").text(t.name()), v.on("mouseover", function() {
                        n.style("display", "block")
                    }).on("mouseout", function() {
                        n.style("display", "none")
                    })*/
                     document.body.innerHTML +='<div class="d3-tip blip-name" id='+t.number()+' style="position:absolute;top:'+(y-15)+'px;left:'+m+'px;">'+t.name()+'</div>';
                }), v.append("text").attr("x", m).attr("y", y + 4).attr("id","point"+t.number()).attr("class", "blip-text").attr("text-anchor", "middle").text(t.number())
            })
        })
    }
    function f(n) {
        function r(t, n, r, e, a) {
            p.append("text").attr("x", r).attr("y", e).attr("class", a).attr("text-anchor", n).text(t)
        }
        r(n.I.name(), "end", t - 10, 10, "first"), r(n.II.name(), "start", 10, 10, "second"), r(n.III.name(), "start", 10, t - 10, "third"), r(n.IV.name(), "end", t - 10, t - 10, "fourth")
    }
    var d, l, p, h;
    return h = [], l = new tr.util.Fib, d = {}, d.svg = function() {
        return p
    }, d.init = function(t) {
        return p = d3.select(t || "body").append("svg"), d
    }, d.plot = function() {
        var r, a;
        r = n.cycles().reverse(), a = n.quadrants(), p.attr("width", t).attr("height", t), u(r), e(), c(r), n.hasQuadrants() && (f(a), s(r, a.I, 1, -1, "first"), s(r, a.II, -1, -1, "second"), s(r, a.III, -1, 1, "third"), s(r, a.IV, 1, 1, "fourth")), h.forEach(function(t) {
            t()
        })
    }, d
}, tr.graphing.RefTable = function(t) {
    function n() {
        var n = {};
        t.cycles().map(function(t) {
            return {
                order: t.order(),
                name: t.name()
            }
        }).sort(function(t, n) {
            return t.order === n.order ? 0 : t.order < n.order ? -1 : 1
        }).forEach(function(t) {
            n[t.name] = []
        });
        var r = [],
            e = t.quadrants();
        return Object.keys(e).forEach(function(t) {
            r = r.concat(e[t].blips())
        }), r.forEach(function(t) {
            n[t.cycle().name()].push(t)
        }), n
    }
    var r, e = {};
    return e.init = function(t) {
        return r = document.querySelector(t || "body"), e
    }, e.render = function() {
        var t = n(),
            /*e = '<table class="radar-ref-table">';
        Object.keys(t).forEach(function(n) {
            e += '<tr class="radar-ref-status-group"><td colspan="3">' + n + "</td></tr>", t[n].forEach(function(t) {
                var newValue = t.isNew();
                if(newValue==true){
                    var newText = '<span class="newText" style="background-color: rgba(179,32,89,.3);color: #0000;padding: 0 4px;border-radius: 2px; margin-left: 3px;">new</span>';
                }else{
                   var newText = ''; 
                }
                e += "<tr onmouseover='mouseoverfunction("+t.number()+")' onmouseout='mouseoutfunction("+t.number()+")' onclick='onclickfunction("+t.number()+")' id=table"+t.number()+"><td>" + t.number() + "</td><td>" + t.name() + newText +"</td></tr>"
                e += "<tr class='description-row' id=description"+t.number()+" style='display:none;'><td style='border-top:1px solid;'>&nbsp;</td><td style='border-top:1px solid;'>" + t.description() + "</td></tr>"
            })
        }), 
        e += "</table>", r.innerHTML = e*/
        e = '<div class="radar-ref-table accordion">';
        Object.keys(t).forEach(function(n) {
            if(n=='Adopt'){
                tooltipText = 'Abopt description';
            }
            if(n=='Trial'){
                tooltipText = 'Trial description';
            }
            if(n=='Assess'){
                tooltipText = 'Assess description';
            }
            if(n=='Hold'){
                tooltipText = 'Hold description';
            }
            e += '<div class="radar-ref-status-group">' + n + "<div class='tooltip'><span class='tooltip-icon'>?</span><span class='tooltiptext'>"+tooltipText+"</span></div></div>", t[n].forEach(function(t) {
                var newValue = t.isNew();
                if(newValue=='true'){
                    var newText = '<span class="newText" style="background-color: rgba(179,32,89,.3);color: #0000;padding: 0 4px;border-radius: 2px; margin-left: 3px;">new</span>';
                }else{
                   var newText = ''; 
                }
                e += "<div onmouseover='mouseoverfunction("+t.number()+")' onmouseout='mouseoutfunction("+t.number()+")' id=table"+t.number()+"><a class='accordion-section-title' href='#accordion-"+t.number()+"'>"+t.number()+ ". " + t.name() + newText +"</a>"
                e += "<div id='accordion-"+t.number()+"' class='accordion-section-content   '><p>"+t.description()+"</p></div></div>"
            })
        }), 
        e += "</div>", r.innerHTML = e
    }, e
}, tr.models.Blip = function(t, n, r, e) {
    var a, u;
    return a = {}, u = -1, a.name = function() {
        return t
    }, a.description = function() {
        return e || ""
    }, a.isNew = function() {
        return r
    }, a.cycle = function() {
        return n
    }, a.number = function() {
        return u
    }, a.setNumber = function(t) {
        u = t
    }, a
}, tr.models.Cycle = function(t, n) {
    var r = {};
    return r.name = function() {
        return t
    }, r.order = function() {
        return n
    }, r
}, tr.models.Quadrant = function(t) {
    var n, r;
    return n = {}, r = [], n.name = function() {
        return t
    }, n.add = function(t) {
        Array.isArray(t) ? r = r.concat(t) : r.push(t)
    }, n.blips = function() {
        return r.slice(0)
    }, n
}, tr.models.Radar = function() {
    function t(t) {
        t.forEach(function(t) {
            t.setNumber(++u)
        })
    }
    function n() {
        var t = [];
        for (var n in a) a.hasOwnProperty(n) && null != a[n] && t.push(a[n]);
        return t
    }
    function r() {
        return n().reduce(function(t, n) {
            return t.concat(n.blips())
        }, [])
    }
    var e, a, u;
    return u = 0, a = {
        I: null,
        II: null,
        III: null,
        IV: null
    }, e = {}, e.setFirstQuadrant = function(n) {
        a.I = n, t(a.I.blips())
    }, e.setSecondQuadrant = function(n) {
        a.II = n, t(a.II.blips())
    }, e.setThirdQuadrant = function(n) {
        a.III = n, t(a.III.blips())
    }, e.setFourthQuadrant = function(n) {
        a.IV = n, t(a.IV.blips())
    }, e.hasQuadrants = function() {
        return !!(a.I || a.II || a.III || a.IV)
    }, e.cycles = function() {
        var t, n;
        n = [], t = {}, r().forEach(function(n) {
            t[n.cycle().name()] = n.cycle()
        });
        for (var e in t) t.hasOwnProperty(e) && n.push(t[e]);
        return n.slice(0).sort(function(t, n) {
            return t.order() - n.order()
        })
    }, e.quadrants = function() {
        return a
    }, e
}, tr.util.Fib = function() {
    var t = {};
    return t.sequence = function(t) {
        for (var n = [0, 1], r = 2; t > r; r++) n[r] = n[r - 2] + n[r - 1];
        return n
    }, t.sum = function(n) {
        return 0 === n ? 0 : 1 === n ? 1 : t.sequence(n + 1).reduce(function(t, n) {
            return t + n
        }, 0)
    }, t
};

如果有人对这段代码有想法,请帮助我避免这种重叠。因为我不是javascript专家,所以专家可以解决这个问题。

您可以从https://github.com/trecenti/tech-radar下载代码。只需运行index.html文件,该文件位于浏览器的example文件夹内,并尽量避免点重叠。

这将是一个伟大的,因为我已经花了太多的时间,但没有运气。

谢谢

我修改了JS文件,以避免重叠的点。要做到这一点,只需打开您的"tech-radar.min.js"文件,并将以下代码归档:

d = a(t, f), l = f == t.length - 1 ? 0 : a(t, f + 1);
            var I = s.filter(function(t) {
                return t.cycle() == n
            });
            I.forEach(function(t) {
                var a, s, f = t.name().split(""),
                    I = f.reduce(function(t, n) {
                        return t + n.charCodeAt(0)
                    }, 0);
                     /*var randomNumber = chance.integer({
                    min: 7,
                    max: 42
                });
                    var evenNumber = randomNumber * 2;
                    console.log(evenNumber);*/
                chance = new Chance(I * n.name().length * t.number()), a = Math.PI * chance.integer({
                    min: 13,
                    max: 85
                }) / 180, s = chance.floating({
                    min: l + 25,
                    max: d - 10
                });
                var m = r() + s * Math.cos(a) * e,
                    y = r() + s * Math.sin(a) * u,
现在,用下面提到的代码替换上面的代码:
//new variables for workaround solution - BEGIN
            aa = 0, bb = 0, cc = 0, dd = 0,
            aa1 = 1, bb1 = 1, cc1 = 1, dd1 = 1,
            ee = 0, ff = 0, gg = 0, hh = 0, 
            ee1 = 1, ff1 = 1, gg1 = 1, hh1 = 1,
            ii = 0, jj = 0, kk = 0, ll = 0, 
            ii1 = 1, jj1 = 1, kk1 = 1, ll1 = 1,
            oo = 0, pp = 0, qq = 0, rr = 0,
            oo1 = 1, pp1 = 1, qq1 = 1, rr1 = 1,
            xy1 = 20,  xy2 = 20, xy3 = 30, xy4 = 50, 
            xy5 = 20, xy6 = 40, xy7 = 30, xy8 = 50, 
            xy9 = 50, xy10 = 40, xy11 = 30, xy12 = 50, 
            xy13 = 50, xy14 = 40, xy15 = 30, xy16 = 50,
            yz1 = 300, yz2 = 250, yz3 = 250, yz4 = 200;
            //new variables for workaround solution - END
            d = a(t, f), l = f == t.length - 1 ? 10 : a(t, f + 1);

            var I = s.filter(function(t) {
                return t.cycle() == n
            });

            //New loop - BEGIN
            I.forEach(function(t) {
                if (c == "first" && n.name()== "Hold")
                {
                    aa = aa + 1;
                }
                else if (c == "first" && n.name()== "Assess")
                {
                    bb = bb + 1;
                }
                else if (c == "first" && n.name()== "Trial")
                {
                    cc = cc + 1;
                }
                else if (c == "first" && n.name()== "Adopt")
                {
                    dd = dd + 1;
                }
                else if (c == "second" && n.name()== "Hold")
                {
                    ee = ee + 1;
                }
                else if (c == "second" && n.name()== "Assess")
                {
                    ff = ff + 1;
                }
                else if (c == "second" && n.name()== "Trial")
                {
                    gg = gg + 1;
                }
                else if (c == "second" && n.name()== "Adopt")
                {
                    hh = hh + 1;
                }
                else if (c == "third" && n.name()== "Hold")
                {
                    ii = ii + 1;
                }
                else if (c == "third" && n.name()== "Assess")
                {
                    jj = jj + 1;
                }
                else if (c == "third" && n.name()== "Trial")
                {
                    kk = kk + 1;
                }
                else if (c == "third" && n.name()== "Adopt")
                {
                    ll = ll + 1;
                }
                else if (c == "fourth" && n.name()== "Hold")
                {
                    oo = oo + 1;
                }
                else if (c == "fourth" && n.name()== "Assess")
                {
                    pp = pp + 1;
                }
                else if (c == "fourth" && n.name()== "Trial")
                {
                    qq = qq + 1;
                }
                else if (c == "fourth" && n.name()== "Adopt")
                {
                    rr = rr + 1;
                }                       
            })              
            //New loop - END


            I.forEach(function(t) {
                var a, s, f = t.name().split(""),
                    I = f.reduce(function(t, n) {
                        return t + n.charCodeAt(0)
                    }, 0);          

                // New conditional statements - BEGIN

                if (c == "first" && n.name()== "Hold")
                {
                    if (aa1 == 1)
                    {
                        s = ((l + d) / 2) + 10;
                    }   
                    else if (aa1 == 2)
                    {
                        s = (l + d) / 2; 
                    }
                    else if (aa1 == 3)
                    {
                        s = ((l + d) / 2) - 10;
                    }                   
                    a = xy1 / 180;
                    var m = r() + s * Math.cos(a) * e,
                    y = r() + s * Math.sin(a) * u;
                    xy1 = xy1 + (yz1 / aa);     
                    aa1 = aa1 + 1;  
                    if (aa1 > 3)
                    {
                        aa1 = 1;
                    }
                }
                else if (c == "first" && n.name()== "Assess")
                {
                    if (bb1 == 1)
                    {
                        s = ((l + d) / 2) + 10;
                    }   
                    else if (bb1 == 2)
                    {
                        s = (l + d) / 2; 
                    }
                    else if (bb1 == 3)
                    {
                        s = ((l + d) / 2) - 10;
                    }                   
                    a = xy2 / 180;
                    var m = r() + s * Math.cos(a) * e,
                    y = r() + s * Math.sin(a) * u;
                    xy2 = xy2 + (yz2 / bb); 
                    bb1 = bb1 + 1;  
                    if (bb1 > 3)
                    {
                        bb1 = 1;
                    }                   
                }
                else if (c == "first" && n.name()== "Trial")
                {
                    if (cc1 == 1)
                    {
                        s = ((l + d) / 2) + 30;
                    }   
                    else if (cc1 == 2)
                    {
                        s = (l + d) / 2; 
                    }
                    else if (cc1 == 3)
                    {
                        s = ((l + d) / 2) - 30;
                    }               
                    a = xy3 / 180;
                    var m = r() + s * Math.cos(a) * e,
                    y = r() + s * Math.sin(a) * u;
                    xy3 = xy3 + (yz2 / cc); 
                    cc1 = cc1 + 1;  
                    if (cc1 > 3)
                    {
                        cc1 = 1;
                    }                       
                }
                else if (c == "first" && n.name()== "Adopt")
                {
                    if (dd1 == 1)
                    {
                        s = ((l + d) / 2) + 30;
                    }   
                    else if (dd1 == 2)
                    {
                        s = (l + d) / 2; 
                    }
                    else if (dd1 == 3)
                    {
                        s = ((l + d) / 2) - 30;
                    }               
                    a = xy4 / 180;
                    var m = r() + s * Math.cos(a) * e,
                    y = r() + s * Math.sin(a) * u;
                    xy4 = xy4 + (yz4 / dd);     
                    dd1 = dd1 + 1;  
                    if (dd1 > 3)
                    {
                        dd1 = 1;
                    }                       
                }
                else if (c == "second" && n.name()== "Hold")
                {
                    if (ee1 == 1)
                    {
                        s = ((l + d) / 2) + 10;
                    }   
                    else if (ee1 == 2)
                    {
                        s = (l + d) / 2; 
                    }
                    else if (ee1 == 3)
                    {
                        s = ((l + d) / 2) - 10;
                    }               
                    a = xy5 / 180;
                    var m = r() + s * Math.cos(a) * e,
                    y = r() + s * Math.sin(a) * u;
                    xy5 = xy5 + (yz1 / ee);
                    ee1 = ee1 + 1;  
                    if (ee1 > 3)
                    {
                        ee1 = 1;
                    }   
                }
                else if (c == "second" && n.name()== "Assess")
                {
                    if (ff1 == 1)
                    {
                        s = ((l + d) / 2) + 10;
                    }   
                    else if (ff1 == 2)
                    {
                        s = (l + d) / 2; 
                    }
                    else if (ff1 == 3)
                    {
                        s = ((l + d) / 2) - 10;
                    }               
                    a = xy6 / 180;
                    var m = r() + s * Math.cos(a) * e,
                    y = r() + s * Math.sin(a) * u;
                    xy6 = xy6 + (yz2/ ff);  
                    ff1 = ff1 + 1;  
                    if (ff1 > 3)
                    {
                        ff1 = 1;
                    }                       
                }
                else if (c == "second" && n.name()== "Trial")
                {
                    if (gg1 == 1)
                    {
                        s = ((l + d) / 2) + 30;
                    }   
                    else if (gg1 == 2)
                    {
                        s = (l + d) / 2; 
                    }
                    else if (gg1 == 3)
                    {
                        s = ((l + d) / 2) - 30;
                    }               
                    a = xy7 / 180;
                    var m = r() + s * Math.cos(a) * e,
                    y = r() + s * Math.sin(a) * u;
                    xy7 = xy7 + (yz3 / gg);
                    gg1 = gg1 + 1;  
                    if (gg1 > 3)
                    {
                        gg1 = 1;
                    }                       
                }
                else if (c == "second" && n.name()== "Adopt")
                {
                    if (hh1 == 1)
                    {
                        s = ((l + d) / 2) + 30;
                    }   
                    else if (hh1 == 2)
                    {
                        s = (l + d) / 2; 
                    }
                    else if (hh1 == 3)
                    {
                        s = ((l + d) / 2) - 30;
                    }               
                    a = xy8 / 180;
                    var m = r() + s * Math.cos(a) * e,
                    y = r() + s * Math.sin(a) * u;
                    xy8 = xy8 + (yz4 / hh);
                    hh1 = hh1 + 1;  
                    if (hh1 > 3)
                    {
                        hh1 = 1;
                    }                       
                }
                else if (c == "third" && n.name()== "Hold")
                {
                    if (ii1 == 1)
                    {
                        s = ((l + d) / 2) + 10;
                    }   
                    else if (ii1 == 2)
                    {
                        s = (l + d) / 2; 
                    }
                    else if (ii1 == 3)
                    {
                        s = ((l + d) / 2) - 10;
                    }               
                    a = xy9 / 180;
                    var m = r() + s * Math.cos(a) * e,
                    y = r() + s * Math.sin(a) * u;
                    xy9 = xy9 + (yz1 / ii);
                    ii1 = ii1 + 1;  
                    if (ii1 > 3)
                    {
                        ii1 = 1;
                    }   
                }
                else if (c == "third" && n.name()== "Assess")
                {
                    if (jj1 == 1)
                    {
                        s = ((l + d) / 2) + 10;
                    }   
                    else if (jj1 == 2)
                    {
                        s = (l + d) / 2; 
                    }
                    else if (jj1 == 3)
                    {
                        s = ((l + d) / 2) - 10;
                    }               
                    a = xy10 / 180;
                    var m = r() + s * Math.cos(a) * e,
                    y = r() + s * Math.sin(a) * u;
                    xy10 = xy10 + (yz2 / jj);
                    jj1 = jj1 + 1;  
                    if (jj1 > 3)
                    {
                        jj1 = 1;
                    }                       
                }
                else if (c == "third" && n.name()== "Trial")
                {
                    if (kk1 == 1)
                    {
                        s = ((l + d) / 2) + 30;
                    }   
                    else if (kk1 == 2)
                    {
                        s = (l + d) / 2; 
                    }
                    else if (kk1 == 3)
                    {
                        s = ((l + d) / 2) - 30;
                    }               
                    a = xy11 / 180;
                    var m = r() + s * Math.cos(a) * e,
                    y = r() + s * Math.sin(a) * u;
                    xy11 = xy11 + (yz3 / kk);
                    kk1 = kk1 + 1;  
                    if (kk1 > 3)
                    {
                        kk1 = 1;
                    }                       
                }
                else if (c == "third" && n.name()== "Adopt")
                {
                    if (ll1 == 1)
                    {
                        s = ((l + d) / 2) + 30;
                    }   
                    else if (ll1 == 2)
                    {
                        s = (l + d) / 2; 
                    }
                    else if (ll1 == 3)
                    {
                        s = ((l + d) / 2) - 30;
                    }               
                    a = xy12 / 180;
                    var m = r() + s * Math.cos(a) * e,
                    y = r() + s * Math.sin(a) * u;
                    xy12 = xy12 + (yz4 / ll);
                    ll1 = ll1 + 1;  
                    if (ll1 > 3)
                    {
                        ll1 = 1;
                    }                       
                }
                else if (c == "fourth" && n.name()== "Hold")
                {
                    if (oo1 == 1)
                    {
                        s = ((l + d) / 2) + 10;
                    }   
                    else if (oo1 == 2)
                    {
                        s = (l + d) / 2; 
                    }
                    else if (oo1 == 3)
                    {
                        s = ((l + d) / 2) - 10;
                    }               
                    a = xy13 / 180;
                    var m = r() + s * Math.cos(a) * e,
                    y = r() + s * Math.sin(a) * u;
                    xy13 = xy13 + (yz1 / oo);
                    oo1 = oo1 + 1;  
                    if (oo1 > 3)
                    {
                        oo1 = 1;
                    }   
                }
                else if (c == "fourth" && n.name()== "Assess")
                {
                    if (pp1 == 1)
                    {
                        s = ((l + d) / 2) + 10;
                    }   
                    else if (pp1 == 2)
                    {
                        s = (l + d) / 2; 
                    }
                    else if (pp1 == 3)
                    {
                        s = ((l + d) / 2) - 10;
                    }               
                    a = xy14 / 180;
                    var m = r() + s * Math.cos(a) * e,
                    y = r() + s * Math.sin(a) * u;
                    xy14 = xy14 + (yz2 / pp);
                    pp1 = pp1 + 1;  
                    if (pp1 > 3)
                    {
                        pp1 = 1;
                    }                       
                }
                else if (c == "fourth" && n.name()== "Trial")
                {
                    if (qq1 == 1)
                    {
                        s = ((l + d) / 2) + 30;
                    }   
                    else if (qq1 == 2)
                    {
                        s = (l + d) / 2; 
                    }
                    else if (qq1 == 3)
                    {
                        s = ((l + d) / 2) - 30;
                    }               
                    a = xy15 / 180;             
                    m = r() + s * Math.cos(a) * e,
                    y = r() + s * Math.sin(a) * u;
                    xy15 = xy15 + (yz3 / qq) ;
                    qq1 = qq1 + 1;  
                    if (qq1 > 3)
                    {
                        qq1 = 1;
                    }                       
                }
                else if (c == "fourth" && n.name()== "Adopt")
                {
                    if (rr1 == 1)
                    {
                        s = ((l + d) / 2) + 30;
                    }   
                    else if (rr1 == 2)
                    {
                        s = (l + d) / 2; 
                    }
                    else if (rr1 == 3)
                    {
                        s = ((l + d) / 2) - 30;
                    }               
                    a = xy16 / 180;
                    var m = r() + s * Math.cos(a) * e,
                    y = r() + s * Math.sin(a) * u;
                    xy16 = xy16 + (yz4 / rr);
                    rr1 = rr1 + 1;  
                    if (rr1 > 3)
                    {
                        rr1 = 1;
                    }                       
                }

一旦你像上面提到的那样替换了代码,只要看看它们之间没有重叠的点。

这是一个冗长的方法,任何人都可以优化它,但它将解决重叠问题。

我正在使用上面提到的方法,它可以帮助人们摆脱这种重叠。但如果有人有其他更好的方法来避免这种重叠,请分享。

谢谢

相关内容

  • 没有找到相关文章

最新更新