2009-05-08 14 views
1

その金曜日のパスにXオブジェクトの最も平均的な位置を取得し、現地時間でクロックはので、私の脳は文句を言わない私に解決策を与え、3.22pmであるので、私は尋ねる:Y利用可能な位置

イムしようActionscript 3.0に関数/アルゴリズムを記述すると、y個の利用可能な位置のパスに沿った位置のx個の位置の平均位置がわかります。

Yは常にXよりも大きくなります。

バックグラウンドは、マップを取得しています(たとえば、パスに沿って)可能な50のオブジェクトの配置です。しかし、私はこのパスに沿って32個のオブジェクトしか配置できませんでしたが、プレースメントができるだけそのパスに沿って平均的になるようにします。たとえば、それは最後に大きなギャップではありません。私の利用可能なポジションは現時点でポイント値を持つ配列に格納されています。

totalPos/wantedPosを実行してフロアすれば、最後には「醜い」ギャップがあります。

EDIT:

私は他の誰がそれを望んで包み機能を追加したい:

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を持っていると仮定し...

答えて

2

あなたがない場合totalPos/wantedPos、あなたはintにない可能性の高い番号を取得します。例7分の32 = 4.57の場合

...

あなたが床にそれをして4を選択した場合、あなたが最後に大きなギャップを得るのですか。しかし、あなたが4.57とそれを蓄積するならば、あなたはギャップを狭めるでしょう。

また、最初は4を選択します。次の数字の場合、2 * 4.57 ... = 9.14 ...となるので、9を選択します。次に3 * 4.57 .. = 13.71だから13を選択してください。その他...

床の代わりに丸めた方がいいでしょう。

幸運:)

+0

ありがとうございました!魅力のように動作します。 – espenhogbakk

0

私が正しく理解していれば、私はこの種のもののための基本的なアルゴリズムがあると思います(が、その学校以来、あまりにも長かったです!)。基本的には、再帰呼び出しでエンドポイントを渡し、中間点にオブジェクトを配置します。最初のエンドポイントとして開始 - >中間、および第2のエンドツーエンドとして繰り返されます。だからあなたはギャップを半分に分けています。

これを入力すると、配布するオブジェクトの数が正方形である場合にのみ動作することがわかります。しかし、他の人にもっと良いアイデアを与える場合に備えて、私は答えを残します。

関連する問題