1

现在是星期五,当地时间是下午 3.22,所以我的大脑不会给我解决方案,所以我问:

我试图在 Actionscript 3.0 中编写一个函数/算法,它为我提供了沿 y 个可用位置的路径的 x 个位置的最平均位置。

当然,Y 总是大于 X。

背景是,我有一张地图,其中包含例如 50 个可能的对象位置(沿路径)。但是我只有 32 个对象可以沿着这条路径放置,但我希望它们的放置尽可能平均/均匀地沿着这条路径。因此,例如,它最终不会有很大的差距。我的可用位置目前存储在一个带有点值的数组中。

如果你只是做 totalPos/wantedPos 并将其落地,最后将是一个“丑陋”的差距,有什么想法吗?

编辑:

我想添加该功能以防其他人想要它:

function place (x : uint, y : uint ) : Array
{
    var a : Array = new Array();
    var s : Number = y / x;
    var c : Number = 0;

    for (var i : Number = 0; i<x; i++) {
        c++;
        var pos : Number = Math.round(i * s);
        a.push(posArray[pos]);
    }
    return a;
}

假设你有一个数组 posArray 已经有可能的位置......

4

2 回答 2

2

如果您执行 totalPos/wantedPos,您会得到一个可能不在 int 中的数字。

例如 32/7 = 4.57...

如果你把它放倒并选择 4,那么你最终会得到一个很大的差距。但是,如果您累积 4.57 并下限,您将缩小差距。

再次例如 32/7 = 4.57... 所以最初您选择 4。对于下一个数字,您会得到 2 * 4.57... = 9.14...,所以您选择 9。然后 3 * 4.57... = 13.71 所以你选择 13. 等等...

如果你四舍五入而不是地板可能会更好。

祝你好运 :)

于 2009-05-08T13:55:15.653 回答
0

如果我理解正确的话,我认为这种事情有一个基本的算法(但它离学校太久了!)。基本上,它是一个递归调用,因此您传入端点并将对象放在中间点。然后,您将开始到中间作为第一个端点,将中间到结束作为第二个端点进行递归。所以你一直把差距分成两半。

当我键入此内容时,我意识到这仅在要分配的对象数量为正方形时才有效。但是,我会留下答案,以防它给别人一个更好的主意。

于 2009-05-08T14:57:59.280 回答