什么是在点周围定位8个圆圈的优雅方式

时间:2012-12-08 18:02:38

标签: actionscript-3 actionscript

var circles:Array = new Array();


for(var i:int = 0; i < 8; i++)
{

    var ball:Ball = new Ball();
        ball.x = ???
        ball.y = ???
        circles.push(ball);
}

将球定位在某个点附近的最佳方法是什么,比如相距5-10的距离,是否有一些公式?

2 个答案:

答案 0 :(得分:7)

for(var i:int = 0; i < 8; i++)
{
    var ball:Ball = new Ball();

    // Point has a useful static function for this, it takes two parameters
    // First, length, in other words how far from the center we want to be
    // Second, it wants the angle in radians, a complete circle is 2 * Math.PI
    // So, we're multiplying that with (i / 8) to place them equally far apart
    var pos:Point = Point.polar(50, (i / 8) * Math.PI * 2);

    // Finally, set the position of the ball
    ball.x = pos.x;
    ball.y = pos.y;

    circles.push(ball);
}

答案 1 :(得分:1)

我不知道actionscript3,所以这个确切的代码不起作用,但它应该给你一个基本的想法

for(int c = 0; c < 8; c++)
{
   Ball ball;
   ball.x = point.x;
   ball.y = point.y;
   ball.x += sin(toRadians((c/8) * 360));
   ball.y += cos(toRadians((c/8) * 360));
   circles.add(ball);
}

如果你不知道“罪恶”和“cos”做什么,或者“toRadians”意味着什么,那么只需谷歌:“正弦余弦三角法”。你会找到很多教程。

在这里,我找到了这个。它会教你“罪”,“cos”和“弧度”是什么意思。 http://www.khanacademy.org/math/trigonometry

显然你可以坚持使用grapefrukt的答案,但是如果你想知道“Point.polar”背后的真实情况,请查看这些视频。