如何计算多个区域合并后的最小坐标点和宽高
要计算合并区域后的最小坐标点和宽高,可以按照以下步骤进行:
- 初始化最小坐标点的x和y值为第一个区域的x和y值,最大坐标点的x和y值为第一个区域的x和y值加上宽度和高度。
- 遍历数组的其他区域,更新最小坐标点和最大坐标点的值:
- 如果区域的x值小于最小坐标点的x值,更新最小坐标点的x值。
- 如果区域的y值小于最小坐标点的y值,更新最小坐标点的y值。
- 如果区域的x值加上宽度大于最大坐标点的x值,更新最大坐标点的x值。
- 如果区域的y值加上高度大于最大坐标点的y值,更新最大坐标点的y值。
- 计算合并后的宽度和高度,宽度等于最大坐标点的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 著作权归作者所有。请勿转载和采集!