所以我想用javascript获取矩形的4个角位置。 ( - >顶部,底部,左侧,右侧)
我已经找到了一个函数,它将矩形(1个字符)的所有位置[x,y]从矩阵返回到数组形式。
var matrix=[
'000000000000',
'000111111000',
'000111111000',
'000111111000',
'000000000000'
]
所以矩形位置的result_array看起来像他的:
var result_array=[
[3,1], [4,1], [5,1], [6,1], [7,1], [8,1],
[3,2], [4,2], [5,2], [6,2], [7,2], [8,2],
[3,3], [4,3], [5,3], [6,3], [7,3], [8,3]
]
var my_result_should_be: {
"top_left":[3,1],
"top_right":[8,1],
"bottom_left":[3,3],
"bottom_right":[8,3]
}
但是现在 - 如何获得矩形点(x / y阵列)的角位置?
我的想法是所有矩形应该有:
但是我想从矩形位置计算4个角点([1,3], [1,8], [3,3], [3,8]
),即使矩形以未知角度旋转,如下面的符号所示:
var rotated_matrix=[
'000000000000',
'011111000000',
'000111110000',
'000001111100',
'000000000000'
]
var result_array= [
[1,1],[2,1],[3,1],[4,1],[5,1],
[3,2],[4,2],[5,2],[6,2],[7,2],
[5,3],[6,3],[7,3],[8,3],[9,3],
]
var my_result_should_be: {
"top_left":[1,1],
"top_right":[5,1],
"bottom_left":[5,3],
"bottom_right":[9,3]
}
所以我编写了一个能够从上面返回列出的点的函数(maxX,minX,maxY,minY),但是因为可能有多个最大/最小点(因为例如Y值是相同但是x值不是)我不确定哪些点是正确的。特别是如果旋转矩形......
var result_array=[[1,3], [1,4], [1,5], [1,6], [1,7], [1,8],[2,3], [2,4], [2,5], [2,6], [2,7],[2,8],[3,3], [3,4], [3,5], [3,6], [3,7],[3,8]];
var results = {
'maxX': result_array.filter(e => e[0] === Math.max(...result_array.map(e => e[0]))),
'minX': result_array.filter(e => e[0] === Math.min(...result_array.map(e => e[0]))),
'maxY': result_array.filter(e => e[1] === Math.max(...result_array.map(e => e[1]))),
'minY': result_array.filter(e => e[1] === Math.min(...result_array.map(e => e[1])))
}
console.log(results);

这是上述功能的结果,所以你可以看到有几个极端点"但哪一个是正确的呢?
var extreme points: {
"maxX":[[3,3],[3,4],[3,5],[3,6],[3,7],[3,8]],
"minX":[[1,3],[1,4],[1,5],[1,6],[1,7],[1,8]],
"maxY":[[1,8],[2,8],[3,8]],
"minY":[[1,3],[2,3],[3,3]]
}
我希望有人知道如何解决这个问题,但是,
提前致谢