私は以下のような配列を持つ2D行列(配列)で長方形の角の位置を探す...Javascriptを:
var my_array = [
'00000000000000000000000',
'00000011111111000000000',
'00000011111111000000000',
'00000011111111000000000',
'00000011111111000000000',
'00000011111111000000000',
'00000000000000000000000',
]
...と私は計算することができる機能を取得したいのですが上記の配列内ののの範囲(4コーナー位置)。
だから私の結果はこのようなものでなければなりません:
var rotated_array = [
"00000000000000000000000",
"00000000001100000000000",
"00000000111110000000000",
"00000001111111000000000",
"00000111111111100000000",
"00000111111111000000000",
"00000011111100000000000",
"00000001110000000000000",
"00000000100000000000000",
"00000000000000000000000",
"00000000000000000000000"
]
// array ----> result should be something like this:
var result= {
'top-left' : [5,5],
'bottom-left' : [8,8],
'top-right' : [11,1],
'bottom-right' : [14,4]
}
:関数は、以下の例の配列のように回転させた配列で作業することができるはずです。また var result= {
'top-left' : [6,1],
'bottom-left' : [6,5],
'top-right' : [13,1],
'bottom-right' : [13,5]
}
私は '1'の配列を返すことができる関数を開発しました「-characters-位置(X/Y-位置)ので、私はこのように(my_array
から)結果配列を取得する:上記のArrayListはまた、それを私の矩形のすべての位置を含むので
var positions = [[7,2],[7,1],[6,1],[6,2],[6,3],[6,4],[6,5],[7,5],[7,4],[7,3],[8,3],[8,2],[8,1],[9,1],[9,2],[9,3],[9,4],[9,5],[8,5],[8,4],[10,5],[10,4],[10,3],[10,2],[10,1],[11,1],[11,2],[11,3],[11,4],[11,5],[12,5],[12,4],[12,3],[12,2],[12,1],[13,1],[13,2],[13,3],[13,4],[13,5]]
4つのコーナーの位置を含める必要があります...しかし、どのように正しい座標を取得するには?
私の考えは、4つのコーナーを取得するためのアレイの最大はxValue、yValue最大、最小はxValueおよび最小yValueをフィルタリングすることでした。良い音が、私のコーナーのために複数の可能性もあります。
var positions = [[7,2],[7,1],[6,1],[6,2],[6,3],[6,4],[6,5],[7,5],[7,4],[7,3],[8,3],[8,2],[8,1],[9,1],[9,2],[9,3],[9,4],[9,5],[8,5],[8,4],[10,5],[10,4],[10,3],[10,2],[10,1],[11,1],[11,2],[11,3],[11,4],[11,5],[12,5],[12,4],[12,3],[12,2],[12,1],[13,1],[13,2],[13,3],[13,4],[13,5]]
var corners = {
'maxX': positions.filter(e => e[0] === Math.max(...positions.map(e => e[0]))),
'minX': positions.filter(e => e[0] === Math.min(...positions.map(e => e[0]))),
'maxY': positions.filter(e => e[1] === Math.max(...positions.map(e => e[1]))),
'minY': positions.filter(e => e[1] === Math.min(...positions.map(e => e[1])))
}
console.log(JSON.stringify(corners))
は、したがって、上記のコードはこのような何かを返します。
{
"maxX":[[13,1],[13,2],[13,3],[13,4],[13,5]], // x values are all 13 (max)
"minX":[[6,1],[6,2],[6,3],[6,4],[6,5]], // x values are all 6 (min)
"maxY":[[6,5],[7,5],[9,5],[8,5],[10,5],[11,5],[12,5],[13,5]], // y values are all 5 (max)
"minY":[[7,1],[6,1],[8,1],[9,1],[10,1],[11,1],[12,1],[13,1]] // y values are all 1 (min)
}
しかし、どのようにのために右の座標を取得します上の結果から各コーナー? 私は右のものを計算する方法を絶対に無知だので、私は誰かが私の機能で私を助けることができると思います...事前に
おかげで、ジョナス
たぶん右が:-)存在しません。あなたは、正方形を回転させたときのコーナーはライン1および2(または0と1)の間の場所になります。あなたは、ベクトルジオメトリにあなたのラスタイメージに変換する場合は、正確な位置の角を計算し、その後最寄りの一つである「グリッド」を見つけることができます。 –
[OK]を[それをお試しください!]AndersFinnJørgensen – Jonas0000