• 求两个矩形的space


    获取两个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()
    
  • 相关阅读:
    查询数据库表的列字段、字段类型、字段长度、是否为空
    AndroidManifest.xml配置文件详解(转载)
    SQL Server Profiler(转载)
    sql 临时表
    sql 全局查询
    react.js
    middleware
    el
    jade模板使用心得
    jade template
  • 原文地址:https://www.cnblogs.com/zxingwork/p/16214628.html
Copyright © 2020-2023  润新知