ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

求两个矩形的space

2022-05-01 23:03:58  阅读:187  来源: 互联网

标签:dist bb space b1 b2 y0 y1 两个 矩形


获取两个Rect之间的space:

import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle, Polygon


def draw_rect(bb, ax, color='black'):
    ax.add_patch(Rectangle(bb[:2], bb[2] - bb[0], bb[3] - bb[1], fill=False, color=color))


def draw_rect_lst(bb_lst, ax, color='black'):
    for bb in bb_lst:
        draw_rect(bb, ax, color)


def rect_distance(bb1, bb2):
    b1_x0, b1_y0, b1_x1, b1_y1 = bb1
    b2_x0, b2_y0, b2_x1, b2_y1 = bb2
    left = b2_x1 < b1_x0
    right = b2_x0 > b1_x1
    bottom = b2_y1 < b1_y0
    top = b2_y0 > b1_y1
    dist = None
    v = None
    if top and left:
        pass
    elif top and right:
        pass
    elif bottom and left:
        pass
    elif bottom and right:
        pass
    elif top:
        dist = b2_y0 - b1_y1
        v = (b1_x1, b1_y1, b1_x1, b1_y1 + dist)

    elif bottom:
        dist = b1_y0 - b2_y1
        v = (b1_x0, b1_y0, b1_x0, b1_y0 - dist)
    elif left:
        dist = b1_x0 - b2_x1
        v = (b1_x0, b1_y0, b1_x0 - dist, b1_y0)

    elif right:
        dist = b2_x0 - b1_x1
        v = (b1_x1, b1_y1, b1_x1 + dist, b1_y1)
    return dist, v


fig, ax = plt.subplots()
ax.plot([10, 10], [10, 10])
rect1 = (10, 10, 40, 40)
rect2 = (30, 50, 70, 80)
rect_lst = [rect1, rect2]
draw_rect(rect1, ax, 'red')
draw_rect(rect2, ax, 'blue')
dist, v = rect_distance(rect1, rect2)
if dist:
    print(dist, v)
    print(v[:2], v[2:])
    plt.plot([v[0], v[2]], [v[1], v[3]], color='green')
plt.show()

标签:dist,bb,space,b1,b2,y0,y1,两个,矩形
来源: https://www.cnblogs.com/zxingwork/p/16214628.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有