为了账号安全,请及时绑定邮箱和手机立即绑定

关于星星重叠问题

var ss=new Array();
for(var p=0;p<50;p++){
    var r=Math.random()*10+10;
    var x=Math.random()*can.width;
    var y=Math.random()*can.height;
    var rott=Math.random()*360;
    ss.push([r,x,y]);

    if (Math.sqrt(Math.pow(ss[0][1]-x,2)+Math.pow(ss[0][2]-y,2))>ss[0][0]+r){
        kk(tex,r,r/2,x,y,rott);
    }
}

function kk(tex,R,r,x,y,rot) {
    tex.lineWidth=10;
    tex.beginPath();
    for(var i=0;i<5;i++){
        tex.lineTo(Math.cos((18+i*72-rot)/180*Math.PI)*R+x,-Math.sin((18+i*72-rot)/180*Math.PI)*R+y);
        tex.lineTo(Math.cos((54+i*72-rot)/180*Math.PI)*r+x,-Math.sin((54+i*72-rot)/180*Math.PI)*r+y);
    }
    tex.closePath();
    tex.fillStyle='#fb3';
    tex.strokeStyle='#fb5';
    tex.lineWidth=10;
    tex.lineJoin='round';
    tex.fill();
    tex.stroke();
}


正在回答

1 回答

这样不行吧  

if (Math.sqrt(Math.pow(ss[0][1]-x,2)+Math.pow(ss[0][2]-y,2))>ss[0][0]+r){
        kk(tex,r,r/2,x,y,rott);
    }
    不是应该与前面生成的所有坐标都进行比较吗 你这样貌似只比较了第一个生成的坐标与当前坐标的距离大于直径


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Canvas绘图详解
  • 参与学习       72895    人
  • 解答问题       422    个

Canvas系列教程第二课,详解Canvas各接口,让同学彻底掌握Canvas绘图

进入课程

关于星星重叠问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信