围绕中心圆分布圈

时间:2015-05-24 17:24:53

标签: javascript geometry computational-geometry famo.us

我正试图在中心圆周围放置六个圆圈。 它们中的每一个具有相同的直径,因此应该可以将它们放置在中心周围而没有间隔或重叠。 我认为接近解决方案,但有一些小的重叠。 我找不到如何得到完美计算的答案。

这是我目前的结果: Current result

这就是我计算它的方式:

this.distribute = function () {

    var surfaceSize = this.surface.getAbsoluteSize(),
        i,
        x = 0,
        y = 0;

    // 7 CIRCLES 6 AFFECTED
    for (i = 0; i < this.config.length; i += 1) {
        var oBall = this.getBall(i);


        if (i > 0) {
            x = oBall.config.size.width * Math.sin(i);
            y = oBall.config.size.height * Math.cos(i);
        }

        oBall.node.setPosition(x, y, 0);
    }
};

提前致谢

1 个答案:

答案 0 :(得分:3)

只需使用60 deg === PI/3

http://jsfiddle.net/coma/nk0ms9hb/

var circles = document.querySelectorAll('div.circles > div');

Array.prototype.forEach.call(circles, function (circle, index) {

    var angle = index * Math.PI / 3;

    circle.style.top = Math.sin(angle) + 'em';
    circle.style.left = Math.cos(angle) + 'em';
});

我正在使用ems来简化2 * radius === 1em

等计算