我有類似下面的數組矩形的角落位置...的Javascript:查找二維矩陣(陣列)
var my_array = [
'00000000000000000000000',
'00000011111111000000000',
'00000011111111000000000',
'00000011111111000000000',
'00000011111111000000000',
'00000011111111000000000',
'00000000000000000000000',
]
...我想獲得一個功能就是能夠計算(4個角位置)的1個字符在上面的數組中。
所以我的結果應該是這樣的:
var result= {
'top-left' : [6,1],
'bottom-left' : [6,5],
'top-right' : [13,1],
'bottom-right' : [13,5]
}
而且功能應該能夠在旋轉陣列的工作如下面的例子數組:
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]
}
我開發了一個函數,能夠返回'1 「-characters位(X/Y位上),所以我將得到一個結果陣列(從my_array
)所示:
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個角落位置......但如何獲得正確的座標?
我的想法是過濾陣列最大的x值,最大的y值,最小的x值和最小的y值,以獲得4個角。聽起來不錯,但也有我的角落多種可能性:
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)。如果將光柵圖像轉換爲矢量幾何圖形,則可以計算確切的位置轉角,然後查找最接近的「網格」。 –
好的聲音正確...但tbh我不知道如何將矩陣轉換爲矢量幾何.. @AndersFinnJørgensen – Jonas0000