def _get_edge_constraints()

in mujoco_worldgen/util/placement.py [0:0]


def _get_edge_constraints(sizes, width, height, placement_margin):
    # a xy >= b
    a_edge = []
    b_edge = []
    for idx, s in enumerate(sizes):
        # x_idx >= 0
        a = np.zeros(2 * len(sizes))
        a[idx] = 1.0
        a_edge.append(a)
        b_edge.append(placement_margin)

        # x_idx <= width - s_idx[0]
        # -x_idx >= s_idx[0] - width
        a = np.zeros(2 * len(sizes))
        a[idx] = -1.0
        a_edge.append(a)
        b_edge.append(s[0] - width + placement_margin)

        # y_idx >= 0
        a = np.zeros(2 * len(sizes))
        a[idx + len(sizes)] = 1.0
        a_edge.append(a)
        b_edge.append(placement_margin)

        # y_idx <= height - s_idx[1]
        # -y_idx >= s_idx[0] - height
        a = np.zeros(2 * len(sizes))
        a[idx + len(sizes)] = -1.0
        a_edge.append(a)
        b_edge.append(s[1] - height + placement_margin)
    a_edge = np.stack(a_edge)
    b_edge = np.array(b_edge)
    return a_edge, b_edge