【问题标题】:Get the most average position of X objects on a path with Y available positions在具有 Y 个可用位置的路径上获取 X 个对象的最平均位置
【发布时间】:2009-05-08 13:29:39
【问题描述】:

现在是星期五,当地时间是下午 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 已经有可能的位置...

【问题讨论】:

    标签: algorithm math actionscript average


    【解决方案1】:

    如果您执行 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. Etc ...

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

    祝你好运:)

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-11-25
        • 1970-01-01
        • 1970-01-01
        • 2022-08-02
        • 2021-09-22
        • 2016-12-21
        • 1970-01-01
        • 2011-04-03
        • 1970-01-01
        相关资源
        最近更新 更多