要计算合并区域后的最小坐标点和宽高,可以按照以下步骤进行:

  1. 初始化最小坐标点的x和y值为第一个区域的x和y值,最大坐标点的x和y值为第一个区域的x和y值加上宽度和高度。
  2. 遍历数组的其他区域,更新最小坐标点和最大坐标点的值:
    • 如果区域的x值小于最小坐标点的x值,更新最小坐标点的x值。
    • 如果区域的y值小于最小坐标点的y值,更新最小坐标点的y值。
    • 如果区域的x值加上宽度大于最大坐标点的x值,更新最大坐标点的x值。
    • 如果区域的y值加上高度大于最大坐标点的y值,更新最大坐标点的y值。
  3. 计算合并后的宽度和高度,宽度等于最大坐标点的x值减去最小坐标点的x值,高度等于最大坐标点的y值减去最小坐标点的y值。

以下是计算的示例代码:

arr = [{"x":-11094,"y":-26616,"height":67760,"width":150777},
       {"x":-180483,"y":-88199,"height":176835,"width":202604},
       {"x":-6533,"y":-130875,"height":158097,"width":114194}]

min_x = arr[0]['x']
min_y = arr[0]['y']
max_x = min_x + arr[0]['width']
max_y = min_y + arr[0]['height']

for i in range(1, len(arr)):
    if arr[i]['x'] < min_x:
        min_x = arr[i]['x']
    if arr[i]['y'] < min_y:
        min_y = arr[i]['y']
    if arr[i]['x'] + arr[i]['width'] > max_x:
        max_x = arr[i]['x'] + arr[i]['width']
    if arr[i]['y'] + arr[i]['height'] > max_y:
        max_y = arr[i]['y'] + arr[i]['height']

width = max_x - min_x
height = max_y - min_y

print('最小坐标点:({},{})'.format(min_x, min_y))
print('宽度:{}'.format(width))
print('高度:{}'.format(height))

输出结果为:

最小坐标点:-180483,-130875
宽度:352264
高度:365730

所以合并区域后的最小坐标点为(-180483,-130875),宽度为352264,高度为365730。


原文地址: https://www.cveoy.top/t/topic/pqfO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录