geometry_utils.py 文件源码

python
阅读 24 收藏 0 点赞 0 评论 0

项目:gym-extensions 作者: Breakend 项目源码 文件源码
def rectangle_to_rectangle_distance(ca, cb, wa, wb, ha, hb):
    a1 = ca + np.array([wa/2.0, ha/2.0])
    a2 = ca + np.array([wa/2.0, -ha/2.0])
    a3 = ca + np.array([-wa/2.0, -ha/2.0])
    a4 = ca + np.array([-wa/2.0, ha/2.0])

    b1 = cb + np.array([wb/2.0,   hb/2.0])
    b2 = cb + np.array([wb/2.0,  -hb/2.0])
    b3 = cb + np.array([-wb/2.0, -hb/2.0])
    b4 = cb + np.array([-wb/2.0,  hb/2.0])

    for e1, e2 in product(rectangle_edges(a1,a2,a3,a4), rectangle_edges(b1,b2,b3,b4)):
        if segments_intersect(e1[0], e1[1], e2[0], e2[1]):
            return 0.0

    da1 = point_to_rectangle_distance(a1, cb, wb, hb)
    da2 = point_to_rectangle_distance(a2, cb, wb, hb)
    da3 = point_to_rectangle_distance(a3, cb, wb, hb)
    da4 = point_to_rectangle_distance(a4, cb, wb, hb)

    db1 = point_to_rectangle_distance(b1, ca, wa, ha)
    db2 = point_to_rectangle_distance(b2, ca, wa, ha)
    db3 = point_to_rectangle_distance(b3, ca, wa, ha)
    db4 = point_to_rectangle_distance(b4, ca, wa, ha)    
    return min([da1, da2, da3, da4, db1, db2, db3, db4])
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号