1

我正在使用以下代码生成与页面中另一个元素的最大距离的随机点:

function drawPoints (maxdistance, npoints) {
  var start = $('#startingPoint').position();
  var draw = document.getElementById('draw');

  var i = npoints;
  while(i--) {
    var n = document.createElement('div');
    n.style.position = 'absolute';
    n.style.top = ( - (Math.random() * maxdistance) -10 + start.top).toString() + 'px';
    n.style.left = ( - (Math.random() * maxdistance) + 50 + start.left).toString() + 'px';
    n.style.width = '6px';
    n.style.height = '6px';
    n.style.backgroundColor = 'black';
    n.style.borderRadius = '6px';
    draw.appendChild(n);
  }
}

例如,drawPoints(150, 20);将绘制 20 个点,距离起点的最大距离为 150。

问题是,我如何绘制某种弧线或线条来连接这些点?

4

1 回答 1

1

使用画布和其他新功能非常好,但我认为几乎所有的东西都可以用非常简单的内置函数重新编程(当然不用 jQuery)。

这是连接点的跨浏览器功能:

function connectDots(xA,yA,xB,yB)
{
    var a=document.createElement("div");
    var r=180*Math.atan2(yB-yA,xB-xA)/Math.PI;
    a.setAttribute("style","width:"+Math.sqrt(Math.pow(xA-xB,2)+Math.pow(yA-yB,2))+"px;height:1px;position:absolute;background-color:black;top:"+yA+"px;left:"+xA+"px;-moz-transform:rotate("+r+"deg);-moz-transform-origin:0px 0px;-webkit-transform:rotate("+r+"deg);-webkit-transform-origin:0px 0px;transform:rotate("+r+"deg);transform-origin:0px 0px;-ms-transform:rotate("+r+"deg);-ms-transform-origin:0px 0px;");
    document.body.appendChild(a);
}

四行。

小提琴:http: //jsfiddle.net/mageek/3aG5H/2/

于 2012-06-14T12:50:49.520 回答